我们开始使用 simplecov gem 来计算 Ruby on Rails 应用程序的代码覆盖率。
SimpleCov.start 'rails'
虽然我们只使用 Cucumber 开发了几个测试用例,但 simplecov 提供的成功率高达 40%。
如何让这个费率更加准确?
最佳答案
测量的覆盖率数字可能是准确的。 Ruby 模块、类和方法定义都是代码,因此仅在 simplecov 运行时加载模块和类就涵盖了相当大比例的代码。单个 Cucumber 场景可能会引用您的许多类,因此会导致这种效果。在 rake 任务和其他地方引用您的代码也会增加这种“背景”覆盖范围。您可以通过查看覆盖率报告并观察 class
和 module
以及 def
行被覆盖而了解这种情况的真实程度。定义的主体不是。
不要反抗;就用它吧。不要尝试在代码加载后运行 simplecov,因为 simplecov 仍然会在代码覆盖率图的分母中包含模块、类和方法定义,这会更烦人。
事实上,您甚至可能想要eager load all of your code so that simplecov shows you the lack of coverage in files that your tests wouldn't cause to be loaded otherwise 。 (simplecov 不会检测从未加载的文件。)这将真正为您提供准确的测量。我不得不在最近的项目中停止这样做,因为它以一种我已经忘记的方式干扰工作服,但这对你来说可能不是问题。
关于ruby-on-rails - 使用 simplecov 对 Rails 应用进行少量测试,代码覆盖率高,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37138656/