我使用PowerMockRule来覆盖一个在JDK 8中工作非常好的单元测试,但是当我用JDK 11升级应用程序时,它开始失败了。
我尝试了几个依赖组合的电源模拟,但没有对我起作用。试图找出根本原因和解决办法。能帮我个忙吗?
在JDK 11上出现错误
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)
下面是一个简单的单元测试(不进行复杂的单元测试--但即使是简单的单元测试也会产生相同的错误)
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。
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'
通过添加下面的依赖项而不是运气来尝试
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没有任何进展。
发布于 2021-07-25 22:09:54
看来您需要添加-Djdk.attach.allowAttachSelf=true
请参阅https://github.com/powermock/powermock/issues/979#issuecomment-485678666
https://stackoverflow.com/questions/68521827
复制相似问题