jmockit - 使用 JMockit 和 EMMA 的 ClassFormatError

标签 jmockit emma

我正在尝试使用 EMMA 来衡量一些使用 JMockit 的 JUnit 测试的覆盖率。但是当我在使用 EMMA 进行检测后尝试运行 JMockit 测试时,大约四分之一的测试失败并出现以下错误:

com.logstorage.engine.sensor.SensorManagerTest.setUpBeforeClass(SensorManagerTest.java:98)
    java.lang.ClassFormatError
    at sun.instrument.InstrumentationImpl.redefineClasses0(Native Method)
    at sun.instrument.InstrumentationImpl.redefineClasses(InstrumentationImpl.java:150)
    at mockit.internal.RedefinitionEngine.redefineMethods(RedefinitionEngine.java:152)
    at mockit.internal.RedefinitionEngine.redefineMethods(RedefinitionEngine.java:139)
    at mockit.internal.RedefinitionEngine.redefineMethods(RedefinitionEngine.java:73)
    at mockit.Mockit.setUpMock(Mockit.java:235)
    at com.myapp.MyTest.setUpBeforeClass(MyTest.java:98)

我看不出关于哪些测试失败哪些没有的任何模式。我想这只是 JMockit 中的一个错误,但有人知道解决方法吗?

我发现了一个非常相似的问题,称为“使用 EMMA 获取 ClassFormatError?”但该解决方案对我不起作用(我没有使用任何 reentrant=true 模拟方法)。还有其他想法吗?

提前致谢。

最佳答案

我遇到了同样的问题 - 这似乎已经为我解决了这个问题,希望也能帮助其他人。

如果您通过 ant 运行此程序,请确保您没有 vars在您的 javac目标的debuglevel争论。以下目标将导致错误。

<javac srcdir="${src}" destdir="${bin}" debug="on" debuglevel="lines,source,vars" nowarn="true" /> 

将其更改为:
<javac srcdir="${src}" destdir="${bin}" debug="on" debuglevel="lines,source" nowarn="true">

这可能是一个 JMockit 错误 - 非常微妙并且很容易找到。

关于jmockit - 使用 JMockit 和 EMMA 的 ClassFormatError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/905052/

相关文章:

java - 我们如何使用mockito来获取对象

使用 EMMA 的 Sonar 的 Delphi 代码覆盖率

java - EMMA 代码覆盖率报告使用的颜色图例

java - Maven Emma 的 : $SWITCH_TABLE$ 是什么意思

jmockit - 模拟方法链,其中一个方法使用 @Cascading 返回一个集合

java - JMockit : Inspect local variables of a method

java - 使用 jMockit 进行行为测试以检查函数是否被调用

android - Jenkins JaCoCo Coverage with multiple classes with "$"

tomcat - 艾玛没有创建 coverage.ec 文件

java - 可选是否级联?