【问题标题】:Jacoco JmockIt error with Gradle build -java.lang.UnsupportedOperationExceptionGradle build -java.lang.UnsupportedOperationException 的 Jacoco JmockIt 错误
【发布时间】:2018-01-17 06:39:05
【问题描述】:

我正在使用 jacoco gradle 插件。我的单元测试用例失败并低于异常。我在表格中搜索但没有得到答案。相同的测试用例在 maven (jacoco-maven) 插件上运行良好。

ava.lang.UnsupportedOperationException:类重新定义失败:尝试更改架构(添加/删除字段) 在 sun.instrument.InstrumentationImpl.redefineClasses0(Native Method)

我正在使用 jmockit 1.12 和 jacoco toolVersion = '0.7.1.201405082137'

【问题讨论】:

  • 您在 Gradle 构建/测试期间使用的是什么版本的 JMockit 库?如果它与 jacoco 版本不兼容,那么它会在上面的消息中哭泣。

标签: gradle jacoco jmockit


【解决方案1】:

对我来说,根本原因是我没有把jmockit依赖放在 junit依赖之前。所以请确保你有如下依赖:

testCompile 'org.jmockit:jmockit:1.29'
testCompile 'junit:junit:4.12'

【讨论】:

    【解决方案2】:

    Jmockit 和 Jacoco 都检测类文件。 Jmockit 在构建过程中首先执行此操作,当 jacoco 尝试相同的操作时(稍后在该过程中),它会说“哦,哦,无法检测已经检测过的类文件”。这个问题发生在旧版本的 jacoco 和 jmockit 上。要查看此错误,请在 Gradle 构建期间启用 --stacktrace 选项或启用 --debug

    现在,使用最新的 jacoco 和 jmockit 版本,我们可以轻松解决这个问题。

    如果你使用 jacoco(或使用the latest one here):

    toolVersion="0.7.1.201405082137"
    

    toolVersion="0.7.2.201409121644"
    

    toolVersion="0.7.5.201505241946"
    

    请参阅:changes that went in 0.7.1 version

    对于 JMockit,您必须使用 jmockit 版本:至少 1.8 或更高版本(1.9 到 1.13)。

    org.jmockit:jmockit:1.8
    

    查看:1.8 版本下的更改:http://jmockit.github.io/changes.html

    我看到最新的 jmockit 版本现在是 1.19,所以在 Gradle 中使用这两个版本,并且版本相互兼容并相互支持。

    【讨论】:

      猜你喜欢
      • 2014-06-14
      • 1970-01-01
      • 1970-01-01
      • 2022-07-14
      • 1970-01-01
      • 2017-07-02
      • 1970-01-01
      • 2020-05-10
      • 1970-01-01
      相关资源
      最近更新 更多