evosuite代码覆盖率与jacoco覆盖率不匹配



我使用的是evosuite 1.0.3版本。我能够成功地生成测试类,project_info.xml显示0.75为代码覆盖率,仅为75%(0.75*100)

但当我集成了Jacobo代码覆盖率工具时,我并没有看到75%的覆盖率。它只显示为13%。这可能是什么原因?

以下是我发布mvn evosuite:info时的输出。

[INF]项目中的类总数:12

[INFO]项目中可测试的类的数量:12

[INFO]生成的测试套件数量:10

[信息]总覆盖率:0.7541666666665

难道我不应该看到雅科报告中的覆盖率也和总覆盖率一样高达75%吗?请帮忙。

如果没有最小、完整和可验证的示例,很难说出确切的原因并提出精确的建议来解决您的问题,但引用了关于代码覆盖率的EvoSuite文档:

。。。必须对被测试类(CUT)进行检测,即需要修改其字节码。

不幸的是,这些字节码修改可能与用于测量代码覆盖率的工具(例如,JaCoCo、EclEmma、Cobertura、Clover和JMockit)进行的字节码检测相冲突。所以它很可能最终得到0%的代码覆盖率。。。

同时,如果您获得0%的保险,您可以尝试。。。

JaCoCo中还有两种模式-默认情况下建议使用Java代理的所谓"动态"检测和不使用代理的所谓的"离线"检测。在没有不清楚JaCoCo在您的案例中是如何启动的例子的情况下,然而,除了EvoSuite文档页面上的变通方法之外,JaCoCo"离线"检测可能会有所帮助——引用JaCoCo关于离线检测的文档:

JaCoCo的主要好处之一是Java代理,它可以动态地为类提供工具。这大大简化了代码覆盖率分析,因为不需要预插装和类路径调整。然而,在某些情况下,飞行中的仪器可能不合适,例如:

  • 与执行动态类文件转换的其他代理冲突

对于这样的场景,类文件可以用JaCoCo预先插入。。。

相关内容

  • 没有找到相关文章

最新更新