繁体   English   中英

Rails中的Coveralls代码覆盖范围具有误导性

[英]Coveralls code coverage in Rails is misleading

我们目前正在使用Coveralls覆盖我们的Rails项目的代码。 它为我们提供的覆盖范围结果确实不可靠。 我无数次地发现了尚未规范的类,为它们编写了规范,然后看着覆盖率实际上下降了。 这是因为Coveralls仅检查您的规范加载的类。 因此,如果没有针对某个类的规范,则将其从覆盖率统计信息中排除。 这显然是不理想的。 有没有一种方法可以解决此问题? 我试图在团队中更加强调测试,当这会产生错误的安全感时,这非常困难。

我已经看到两个原因,导致Coveralls(和类似服务Codecov)的覆盖范围统计不可靠:

  • 我上次使用它时,必须告知Coveralls测试套件已并行化。 如果未给出警告,则工作服将显示部分结果。 为避免这种情况,您可以告诉Coveralls并行测试套件已完成。 有关详细信息,请参阅文档 ,但简要介绍一下:

    • 在CI服务器上设置环境变量COVERALLS_PARALLEL=true
    • 将POST { "payload": { "build_num": 1234, "status": "done" } }发送到https://coveralls.io/webhook?repo_token=(your repo token) (某些托管的CI服务会自动找出有效负载。)
  • 如果您多次运行测试套件以重试不稳定的测试,则重试运行的部分结果可能会覆盖第一次运行的几乎全部结果。 我看到的问题是自制重试设置所特有的,但是,如果您正在执行类似操作,请仔细考虑一下是否可能会使Coveralls感到困惑。

对于您的覆盖率报告中缺少的完全未经测试的课程,这并非专门针对Coveralls。 如果要确保已加载所有类,请在运行测试之前急切加载它们 未经测试的类和方法通常是未使用的,因此使用清除代码之类的无效代码检测器审核您的应用程序也可能是迈向更好覆盖范围的一个好步骤。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM