我当前的rubyonrails项目通过rcov进行测试(特别是,
relevance rcov
,而且我们有一个相当高的标准(如果代码覆盖率达到95%,则构建失败)。
我们使用以下命令进行测试:
rcov_cmd = "rcov --rails --text-summary \
--include #{included_dirs} \
--exclude #{excluded_dirs} \
--aggregate #{coverage_dir}/coverage.data \
--output #{coverage_dir} \
今天我在rcov报告中发现了一些注册为green(已经运行)的代码。Homever,我可以证明这段代码没有得到运行(我在函数的开头引发了一个异常,我的单元测试通过了)
我把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%,而不是附加的调用站点信息。
外部参照是否改变了rcov的分析类型?(我以为它只会收集呼叫点信息)。这和第一个命令有什么不同/更好?
(我见过如果单元测试失败,单元测试覆盖率会下降,而且我知道如果运行中出现错误,覆盖率也会下降,但我觉得这很好)