我使用的是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%吗?请帮忙。
答案 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预先测试类文件...