Powermock抱怨在2个地方找到default.properties文件

时间:2018-06-20 02:17:16

标签: android unit-testing testing powermock robolectric

我正在使用Robolectric测试我的应用程序,我决定使用Powermock模拟静态和最终类,因此我在build.gradle文件中添加了以下依赖项:

testImplementation "org.powermock:powermock-module-junit4:1.7.0"
testImplementation "org.powermock:powermock-module-junit4-rule:1.7.0"
testImplementation 'org.powermock:powermock-api-mockito2:1.7.0'
testImplementation 'org.powermock:powermock-classloading-xstream:1.7.0'

然后我开始编写测试,并且一切正常,除了每个使用Powermock的测试也会打印以下警告:

Properties file org/powermock/default.properties is found in 2 places: 
ConfigurationSource{location='file:/C:/Users/USUARIO/.gradle/caches/modules-2/files-2.1/org.powermock/powermock-core/1.7.0/19f022747953e7eccc3e53253f709d726931f407/powermock-core-1.7.0.jar!/org/powermock/default.properties}
ConfigurationSource{location='file:/C:/Users/USUARIO/.gradle/caches/modules-2/files-2.1/org.powermock/powermock-core/1.7.0/19f022747953e7eccc3e53253f709d726931f407/powermock-core-1.7.0.jar!/org/powermock/default.properties}
. Which one will be used is undefined. Please, remove duplicated configuration file (or second PowerMock jar file) from class path to have stable tests.Properties file org/powermock/default.properties is found in 2 places: 
ConfigurationSource{location='file:/C:/Users/USUARIO/.gradle/caches/modules-2/files-2.1/org.powermock/powermock-core/1.7.0/19f022747953e7eccc3e53253f709d726931f407/powermock-core-1.7.0.jar!/org/powermock/default.properties}
ConfigurationSource{location='file:/C:/Users/USUARIO/.gradle/caches/modules-2/files-2.1/org.powermock/powermock-core/1.7.0/19f022747953e7eccc3e53253f709d726931f407/powermock-core-1.7.0.jar!/org/powermock/default.properties}

. Which one will be used is undefined. Please, remove duplicated configuration file (or second PowerMock jar file) from class path to have stable tests.

每个测试都能正常运行,但是我想摆脱那烦人的警告消息。

2 个答案:

答案 0 :(得分:2)

TL; DR;

要解决此问题,请在@PowerMockIgnore上添加“ org.powermock。*”,例如:

@PowerMockIgnore({ "org.powermock.*", "org.mockito.*", "org.robolectric.*", "android.*", "androidx.*" })

就我而言,我一直在使用Roboelectric + PowerMock + Mockito2,但遇到了同样的问题,因为PowerMock加载了几次以设置所有内容,而不是使用PowerMock上的另一种Runner。

我希望这对某人有帮助:-)

答案 1 :(得分:0)

我建议您对Powermock使用范围测试

<dependency>
   <groupId>org.powermock</groupId>
    <artifactId>powermock-core</artifactId>
    <version>${powermock.version}</version>
    <scope>test</scope>
</dependency>