我目前的 Ruby on Rails 项目通过 rcov 进行测试(特别是相关性 rcov,我们有一个相当高的标准(如果我们的代码覆盖率 < 95%,我们将无法构建)。
我们使用以下命令对此进行测试:
rcov_cmd = "rcov --rails --text-summary \
--include #{included_dirs} \
--exclude #{excluded_dirs} \
--aggregate #{coverage_dir}/coverage.data \
--output #{coverage_dir} \
今天我在 rcov 报告中发现了一些注册为绿色(已运行)的代码。Homever,我可以证明这段代码没有运行(我在函数的开头引发了一个异常,并且我的单元测试通过了)
我做了一些研究,发现了 rcov 的 --xrefs 标志,我认为它会为 rcov 报告中的每一行添加所有调用者。
我将 rcov 命令更改为:
rcov_cmd = "rcov --rails --text-summary --xrefs \
--include #{included_dirs} \
--exclude #{excluded_dirs} \
--aggregate #{coverage_dir}/coverage.data \
--output #{coverage_dir} \
(注意添加的--xrefs
标志)。
我没有额外的呼叫站点信息,而是将测试覆盖率从 96% 提高到 48%。
--xrefs 是否改变了 rcov 的分析方式?(我认为它只会收集呼叫站点信息)。这与第一个命令有何不同/更好?(如果单元测试失败,我已经看到单元测试覆盖率下降,而且我知道如果运行中出现错误,覆盖率可能会下降,但对我来说看起来不错)