如何检测未经测试的 ruby 文件?

How to detect untested ruby files?

我最近开始开发大型 Rails 应用程序。 Simplecov 表示测试覆盖率超过 90%。很好。

然而,我时不时地发现测试套件甚至没有加载的文件。这些文件实际上在生产中使用,但出于某种原因,没有人足够关心甚至编写关于它们的最简单的测试。 因此,它们未计入覆盖率指标。

这让我很担心,因为有未知数量的代码可能会在我们不注意的情况下中断生产。

只有我有这个问题吗?有一个众所周知的解决方案吗? 我们能否获得未加载文件的覆盖率指标?

我最终将此添加到我的 environments/test.rb:

config.eager_load = true
config.eager_load_paths += ["#{config.root}/lib"]

但是添加 lib/ 可能会带来不利影响,例如加载生成器等。 This post 很好地解释了每种方法的优缺点。

贡献者为此添加了新的配置选项track_files。对于 rails 项目,值可能如下所示

track_files '{app,lib}/**/*.rb'

此处有更多详细信息:https://github.com/colszowka/simplecov/pull/422