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

时间:2017-01-13 10:45:18

标签: jacoco evosuite

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

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

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

[INFO]项目中的班级总数:12

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

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

[INFO]总体覆盖率:0.7541666666666665

我不应该看到jacoco报告中的覆盖率也是整体覆盖率的75%吗?请帮忙。

1 个答案:

答案 0 :(得分:0)

如果没有Minimal, Complete, and Verifiable example很难说明确切的原因,并建议一些准确的解决方法,请引用EvoSuite documentation about code coverage

  

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

     

不幸的是,那些字节码修改可能与用于测量代码覆盖率的工具(例如,JaCoCo,EclEmma,Cobertura,Clover和JMockit)所做的字节码工具冲突。所以最终你得到0%的代码覆盖率......

     

与此同时,如果你获得0%的报道,你可以试试......

JaCoCo中还有两种模式 - 默认情况下推荐使用Java代理的“即时”检测,以及没有代理的所谓“离线”检测。如果没有示例不清楚JaCoCo是如何在您的情况下启动的,那么除了EvoSuite文档页面的解决方法之外,JaCoCo“离线”工具可能有所帮助 - 引用JaCoCo documentation about offline instrumentation

  

JaCoCo的主要好处之一是Java代理,它可以即时监控类。这样可以简化代码覆盖率分析,因为不需要预先检测和类路径调整。但是,可能存在即时仪器不适合的情况,例如:

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

对于此类场景,可以使用JaCoCo预先测试类文件...