java - powermock 1.7.4 和mockito 1.10.19 的 gradle 配置

标签 java gradle configuration mockito powermock

我正在尝试使用 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/

相关文章:

java - 使用 'this.methodName' 调用或仅使用 'methodName' 调用类的私有(private)方法之间的区别

symfony - 如何访问 Symfony2 中的嵌套参数值?

java - 如何使用xi :include from external library?引用外部log4j2配置文件

android - Gradle——继承产品 flavor

android - 最小化启用 :true in release app crash support v4

Gradle 项目,子项目重复执行

c# - log4net 正在记录所有级别,而不是我配置它要做的

java - 如何在 google-app-engine 上使用 http-post 设置 cron 作业?

java - 字符串数组到十六进制数组 (Java)

java - 无法使用 Spring Boot 测试测试 MockMultipartFile - 找不到序列化器