首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >PowerMockRule与JDK 11

PowerMockRule与JDK 11
EN

Stack Overflow用户
提问于 2021-07-25 19:18:23
回答 1查看 527关注 0票数 0

我使用PowerMockRule来覆盖一个在JDK 8中工作非常好的单元测试,但是当我用JDK 11升级应用程序时,它开始失败了。

我尝试了几个依赖组合的电源模拟,但没有对我起作用。试图找出根本原因和解决办法。能帮我个忙吗?

在JDK 11上出现错误

代码语言:javascript
运行
复制
java.io.RuntimeException: java.io.IOException: Can not attach to current VM
at org.powermock.modules.agent.AgentLoader.attachToThisVM(AgentLoader.java:140)
at org.powermock.modules.agent.AgentLoader.loadAgent(AgentLoader.java:87)
at org.powermock.modules.agent.AgentInitialization.initializeAccordingToJDKVersion(AgentInitialization.java:40)

下面是一个简单的单元测试(不进行复杂的单元测试--但即使是简单的单元测试也会产生相同的错误)

代码语言:javascript
运行
复制
class PowerMockSimpleSpec extend Specification {

  @Rule
  public PowerMockRule rule = new PowerMockRule()  

  def "one plus one should equal two"() {
    expect:
    1 + 1 == 2
  }
}

依赖关系适用于JDK 8,但不适用于JDK 11。

代码语言:javascript
运行
复制
testImplementation group: 'org.powermock', name: 'powermock-module-junit4', version: '2.0.9'
testImplementation group: 'org.powermock', name: 'powermock-api-mockito2', version: '2.0.9'
testImplementation group: 'org.powermock', name: 'powermock-module-junit4-rule-agent', version: '2.0.9'

通过添加下面的依赖项而不是运气来尝试

代码语言:javascript
运行
复制
testImplementation group: 'org.powermock', name: 'powermock-module-junit4', version: '2.0.9'
testImplementation group: 'org.powermock', name: 'powermock-module-junit4-rule', version: '2.0.9'
testImplementation group: 'org.powermock', name: 'powermock-classloading-xstream', version: '2.0.9'

在下面的文档中也提到了,但是同样地,对于退步,https://github.com/powermock/powermock/wiki/PowerMockRule没有任何进展。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-07-25 22:09:54

看来您需要添加-Djdk.attach.allowAttachSelf=true

请参阅https://github.com/powermock/powermock/issues/979#issuecomment-485678666

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68521827

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档