我最近开始研究一个大型 Rails 应用程序。Simplecov 说测试覆盖率超过 90%。很好。
然而,我一次又一次地发现测试套件甚至没有加载的文件。这些文件实际上是在生产中使用的,但由于某种原因,没有人关心甚至编写关于它们的最简单的测试。因此,它们不计入覆盖率指标中。
这让我很担心,因为有未知数量的代码可能会在我们没有注意到的情况下闯入产品。
我是唯一一个有这个问题的人吗?有众所周知的解决方案吗?我们可以有未加载文件的覆盖率指标吗?
我最近开始研究一个大型 Rails 应用程序。Simplecov 说测试覆盖率超过 90%。很好。
然而,我一次又一次地发现测试套件甚至没有加载的文件。这些文件实际上是在生产中使用的,但由于某种原因,没有人关心甚至编写关于它们的最简单的测试。因此,它们不计入覆盖率指标中。
这让我很担心,因为有未知数量的代码可能会在我们没有注意到的情况下闯入产品。
我是唯一一个有这个问题的人吗?有众所周知的解决方案吗?我们可以有未加载文件的覆盖率指标吗?
贡献者track_files
正是为此目的添加了新的配置选项。对于 rails 项目,值可能如下所示
track_files '{app,lib}/**/*.rb'
我最终将其添加到我的environments/test.rb
:
config.eager_load = true
config.eager_load_paths += ["#{config.root}/lib"]
但是添加lib/
可能有缺点,例如加载生成器等。这篇文章很好地解释了每种方法的优缺点。