2

我们开始使用 simplecov gem 来计算 Ruby on Rails 应用程序的代码覆盖率。

SimpleCov.start 'rails'

虽然我们只使用 Cucumber 开发了几个测试用例,但 simplecov 提供的比率高达 40%。

如何使这个比率更准确?

4

1 回答 1

2

测得的覆盖率数字可能是准确的。Ruby 模块、类和方法定义是代码,因此仅在 simplecov 运行时加载模块和类就涵盖了相当大比例的代码。单个 Cucumber 场景可能会引用您的许多类,因此会导致这种效果。在 rake 任务和其他地方对您的代码的引用也会增加这种“背景”覆盖率。通过查看覆盖率报告并观察classmoduledef行被覆盖而定义的主体没有被覆盖,您可以看到这在多大程度上是正确的。

不要与之抗争;只需使用它。不要尝试在代码加载后运行 simplecov,因为 simplecov 仍然会在代码覆盖率数字的分母中包含模块、类和方法定义,这会更烦人。

事实上,您甚至可能希望预先加载您的所有代码,以便 simplecov 向您显示您的测试不会导致加载的文件中缺乏覆盖。(simplecov 不会检测从未加载的文件。)这将真正为您提供准确的测量结果。在我最近的项目中,我不得不停止这样做,因为它以一种我已经忘记的方式干扰了工作服,但这对你来说可能不是问题。

于 2016-05-11T00:23:20.413 回答