1

我们目前正在使用 Coveralls 来覆盖我们的 Rails 项目的代码。它给我们的覆盖结果确实不可靠。我曾多次找到未指定的类,为它们编写规范,然后看到覆盖率实际上下降了。这是因为 Coveralls 仅检查由您的规范加载的类。因此,如果一个类没有规范,它将被排除在覆盖率统计之外。这显然不理想。有没有办法解决这种行为?我正在努力推动我的团队更加重视测试,当这会产生错误的安全感时,这非常困难。

4

1 回答 1

2

我已经看到了 Coveralls(以及类似的服务 Codecov)中覆盖率统计不可靠的两个原因:

  • 当我最后一次使用它时,必须告诉 Coveralls 一个测试套件是并行化的。如果没有给出警告,Coveralls 将显示部分结果。为避免这种情况,您可以告诉 Coveralls 您的并行化测试套件已完成。有关详细信息,请参阅文档,但是,简要地说:

    • COVERALLS_PARALLEL=true在 CI 服务器上设置环境变量
    • POST{ "payload": { "build_num": 1234, "status": "done" } }https://coveralls.io/webhook?repo_token=(your repo token)构建结束时。(一些托管的 CI 服务会自动计算出有效负载。)
  • 如果您多次运行测试套件以重试不稳定的测试,重试运行的部分结果可能会覆盖第一次运行的几乎全部结果。我看到的问题是针对自制重试设置的,但是,如果您正在做类似的事情,请考虑一下它是否会混淆工作服。

关于覆盖报告中缺少的完全未经测试的类,这并不特定于工作服。如果您想确保所有类都已加载,请在运行测试之前立即加载它们。未经测试的类和方法通常未被使用,因此使用 debride 之类的死代码检测器审核您的应用程序可能是在实现更好覆盖的道路上迈出的重要一步。

于 2016-05-11T21:38:32.983 回答