2017-01-13 88 views
0

我使用evosuite 1.0.3版本。我能够成功地生成测试类和project_info.xml显示0.75代码覆盖它不过是75%(0.75 * 100)。evosuite代码覆盖不匹配jacoco覆盖

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

下面是我已发出MVN evosuite输出:信息。

[INFO]的项目类的总数:12

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

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

[INFO]总体覆盖率:0.7541666666666665

我不应该看到jacoco报告还为75%的总体覆盖率覆盖面?请帮忙。

回答

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 ...