java - 使用 JDK 11 的 PowerMockRule
问题描述
我正在使用 PowerMockRule 覆盖一个在 JDK 8 中运行良好的单元测试,但是当我使用 JDK 11 升级我的应用程序时,它开始未能通过单元测试。
我尝试了几个带有 power mock 的依赖组合,但对我没有任何效果。试图找出根本原因和解决方案。有人可以帮我解决这个问题吗?
安装 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
解决方案
Looks like you need to add -Djdk.attach.allowAttachSelf=true
See https://github.com/powermock/powermock/issues/979#issuecomment-485678666
推荐阅读
- android - 如何在 react-native-navigation 中从堆栈中完成 SplashScreen
- c# - .net 核心 web api 和 .net 标准库 EF
- swift - 保存 NSImage 会产生 2X 大小的图像 - Retina 屏幕上的问题
- c - 为没有函数的结构数组赋值
- sql - 如何从不同组中选择最高计数属性?
- php - 在 yii2 应用程序中同时使用 mysql 和 redis
- c# - 变量名称“@Order_id”已被声明。变量名称在查询批处理或存储过程中必须是唯一的
- django - 获取模型表单以输出模型表单字段的自定义名称
- javascript - 为什么此 javascript 代码会禁用我的 Blogger 的安全连接(我认为是 SSL 证书)?
- css - 垂直滚动在 Angular 应用程序的 ul 标签覆盖内不起作用