使用EvoSuite和JMockit进行代码覆盖

时间:2016-04-01 01:54:37

标签: maven unit-testing classloader jmockit evosuite

使用EvoSuite创建了单元测试,并希望使用maven build对此单元测试进行代码覆盖率分析。当我运行maven build时,我得到了......

通过自定义类加载器重新加载JMockit Coverage org.evosuite.runtime.instrumentation.EvoClassLoader;

类org.xyz.MyClass $ 1未经EvoSuite检测。如果您以未经EvoSuite处理的方式运行JUnit测试,可能会发生这种情况,其中一些类在运行测试之前被反射。有关此问题的可能解决方法,请参阅EvoSuite文档。

看起来破解的代码就是......                 if(!InstrumentedClass.class.isAssignableFrom(clazz)){                     String msg =“Class”+ clazz.getName()+“未被EvoSuite检测。”+                             “如果你以一种未被EvoSuite处理的方式运行JUnit测试,可能会发生这种情况,在”+中                             “在运行测试之前,某些类被加载了。请参阅EvoSuite文档”+                             “为此问题提供可能的解决方法。”;                     logger.error(MSG);                     problem = true;                     //抛出新的IllegalStateException(msg); //抛出异常可能有点过于极端}

是否可以通过JMockit运行EvoSuite单元测试?有什么建议吗?

1 个答案:

答案 0 :(得分:0)

在阅读这个问题之前,我从未听说过JMockit,所以它不是EvoSuite中的雷达...... :(

无论如何,我现在刚刚添加了一些关于它的文档:

http://www.evosuite.org/documentation/measuring-code-coverage/

你可以在那里阅读为什么你得到0%的覆盖率,以及可能的解决方法。