我们目前正在使用Coveralls来代码覆盖我们的Rails项目。它给我们的报道结果真的不可靠。我曾经多次发现没有规格的课程,为他们编写规范,然后观看覆盖范围实际上已经下降。这是因为Coveralls只检查由您的规范加载的类。因此,如果没有类的规范,则将其从coverage统计信息中排除。这显然不太理想。有办法绕过这种行为吗?我正在努力推动我的团队更加强调测试,而且这会产生一种虚假的安全感,这很难。
答案 0 :(得分:1)
我已经看到了两个原因,即工作服(以及类似的服务Codecov)中的覆盖率统计数据不可靠:
当我上次使用它时,必须告诉Coveralls测试套件是并行化的。如果没有警告,工作服将显示部分结果。为避免这种情况,您可以告诉Coveralls您的并行测试套件已完成。有关详细信息,请参阅the docs,但简要说明一下:
COVERALLS_PARALLEL=true
{ "payload": { "build_num": 1234, "status": "done" } }
发送到https://coveralls.io/webhook?repo_token=(your repo token)
。 (某些托管的CI服务会自动计算出有效负载。)如果您多次运行测试套件以重试片状测试,则重试运行的部分结果可能会覆盖第一次运行时几乎完整的结果。我看到的问题特别针对自制的重试设置,但是,如果您正在做类似的事情,请考虑一下它是否会混淆Coveralls。
关于覆盖率报告中缺少的完全未经测试的类,这不是特定于Coveralls。如果您想确保加载所有类,load them eagerly before running your tests。未经测试的类和方法通常是未使用的,因此使用像debride这样的死代码检测器审核您的应用也可以是更好覆盖的良好步骤。