我正在尝试使用 Gradle 使用 PowerMock 版本 1.7.4 和 Mockito 版本 1.10.19 运行 Java 测试。
PowerMock 1.7.4 对两者都有传递依赖
org.mockito »mockito-core 1.10.19 等等 org.mockito »mockito-core 2.8.9
(参见 https://mvnrepository.com/artifact/org.powermock/powermock-api-mockito-common/1.7.4 )
为了不引入 Mockito 2.8.9,而是针对 Mockito 1.10.19 编译和运行测试,我必须执行以下操作(因为 powermock jar 中存在各种传递依赖项):
testCompile ("org.mockito:mockito-core:${versions.mockito}") {
exclude group: 'org.hamcrest', module: 'hamcrest-core'
}
testCompile ("org.powermock:powermock-api-mockito-common:${versions.powermock}") {
exclude group: 'org.mockito', module: 'mockito-core'
}
testCompile ("org.powermock:powermock-api-mockito:${versions.powermock}") {
exclude group: 'org.mockito', module: 'mockito-core'
}
testCompile ("org.powermock:powermock-core:${versions.powermock}") {
exclude group: 'org.mockito', module: 'mockito-core'
}
testCompile ("org.powermock:powermock-module-junit4:${versions.powermock}") {
exclude group: 'org.powermock', module: 'powermock-module-junit4-common'
}
testCompile ("org.powermock:powermock-module-junit4-common:${versions.powermock}") {
exclude group: 'org.powermock', module: 'powermock-core'
}
testCompile ("org.powermock:powermock-api-support:${versions.powermock}") {
exclude group: 'org.powermock', module: 'powermock-core'
}
testCompile ("org.powermock:powermock-api-easymock:${versions.powermock}") {
exclude group: 'org.powermock', module: 'powermock-api-support'
}
testCompile ("org.powermock:powermock-module-javaagent:${versions.powermock}") {
exclude group: 'org.powermock', module: 'powermock-core'
}
testCompile ("org.powermock:powermock-module-junit4-rule-agent:${versions.powermock}") {
exclude group: 'org.powermock', module: 'powermock-core'
}
testRuntime("org.mockito:mockito-core:${versions.mockito}") {
exclude group: 'org.hamcrest', module: 'hamcrest-core'
}
版本所在:
versions = [
'mockito': '1.10.19',
'powermock': '1.7.4'
]
在 Gradle 中肯定有更好、更简洁的方法来做到这一点,对吧?
最佳答案
一种压缩方法,仅排除 mockito-core
:
testCompile ("org.mockito:mockito-core:${versions.mockito}") {
exclude group: 'org.hamcrest', module: 'hamcrest-core'
}
['powermock-api-mockito-common',
'powermock-api-mockito',
'powermock-core',
'powermock-module-junit4',
'powermock-module-junit4-common',
'powermock-api-support',
'powermock-api-easymock',
'powermock-module-javaagent',
'powermock-module-junit4-rule-agent'].each {
testCompile ("org.powermock:${it}:${versions.powermock}") {
exclude group: 'org.mockito', module: 'mockito-core'
}
}
此外,testRuntime mockito-core
毫无用处,因为 testRuntime
extends testCompile
关于java - powermock 1.7.4 和mockito 1.10.19 的 gradle 配置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50939752/