1

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

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

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

所以似乎正在破坏的代码是... if (!InstrumentedClass.class.isAssignableFrom(clazz)) { String msg = "Class " + clazz.getName() + " 没有被 EvoSuite 检测。" + "这可能发生如果您以 EvoSuite 未处理的方式运行 JUnit 测试,则在“+”中加载某些类,在运行测试之前进行反射。请参阅 EvoSuite 文档“+”以了解此问题的可能解决方法。”;logger.error(msg); 问题=真;//抛出新的IllegalStateException(msg); // 抛出异常可能有点过于极端 }

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

4

1 回答 1

0

在阅读这个问题之前,我从来没有听说过 JMockit,所以它不是 EvoSuite 中不为人知的东西...... :(

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

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

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

于 2016-04-14T16:38:55.117 回答