高代码覆盖率,使用simplecov对Rails应用程序进行的测试很少

时间:2016-05-10 12:31:20

标签: ruby-on-rails ruby-on-rails-4 cucumber code-coverage simplecov

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

SimpleCov.start 'rails'

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

如何使这个速度更准确?

1 个答案:

答案 0 :(得分:1)

测量的覆盖率数据可能准确。 Ruby模块,类和方法定义是代码,因此仅在运行simplecov时加载模块和类占用了相当大比例的代码。单个Cucumber场景可能会引用您的许多类,因此会产生这种影响。在rake任务和其他地方引用代码也会增加这种“背景”覆盖率。您可以通过查看您的覆盖率报告并观察classmoduledef行被覆盖而未定义的正文来查看这种情况的真实程度。

不要打它;只是使用它。在加载代码后不要尝试运行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不会检测永远不会加载的文件。)这样可以让您获得准确的测量结果。我不得不在最近的项目中停止这样做,因为它以我忘记的方式干扰了Coveralls,但这对你来说可能不是问题。