使用Android单元测试的Hamcrest中的NoSuchMethodError

时间:2015-08-27 20:55:41

标签: android junit4

我正在尝试在Android JUnit4单元测试中使用ExpectedException @Rule,但测试失败了java.lang.NoSuchMethodError: org.hamcrest.Matcher.describeMismatch

其他问题表明我在其他一个图书馆中有一个旧版本的Hamcrest,但似乎并非如此。我从所有其他图书馆中排除了Hamcrest,并且明确地包括了Hamcrest 1.3。

testCompile 'org.hamcrest:hamcrest-core:1.3'
testCompile ('junit:junit:4.12') {
    exclude module: 'hamcrest-core'
}
testCompile ('org.mockito:mockito-core:1.10.19') {
    exclude module: 'hamcrest-core'
}
testCompile ('org.powermock:powermock-api-mockito:1.6.2') {
    exclude module: 'hamcrest-core'
    exclude module: 'objenesis'
}
testCompile ('org.powermock:powermock-module-junit4:1.6.2') {
    exclude module: 'hamcrest-core'
    exclude module: 'objenesis'
}

这是依赖图。

+--- org.hamcrest:hamcrest-core:1.3
+--- junit:junit:4.12
+--- org.mockito:mockito-core:1.10.19
|    \--- org.objenesis:objenesis:2.1
+--- org.powermock:powermock-api-mockito:1.6.2
|    +--- org.mockito:mockito-all:1.10.19
|    \--- org.powermock:powermock-api-support:1.6.2
|         +--- org.powermock:powermock-core:1.6.2
|         |    +--- org.powermock:powermock-reflect:1.6.2
|         |    \--- org.javassist:javassist:3.19.0-GA
|         \--- org.powermock:powermock-reflect:1.6.2
\--- org.powermock:powermock-module-junit4:1.6.2
     +--- junit:junit:4.12
     \--- org.powermock:powermock-module-junit4-common:1.6.2
          +--- junit:junit:4.4 -> 4.12
          +--- org.powermock:powermock-core:1.6.2 (*)
          \--- org.powermock:powermock-reflect:1.6.2

如果我没有将Hamcrest作为明确的依赖项,那么我会得到一个ClassNotFoundException: org.hamcrest.TypeSafeMatcher,所以没有别的东西包括它。

我正在使用带有Gradle插件1.2.3的Android Studio 1.3.2。

1 个答案:

答案 0 :(得分:0)

清理Android Studio中的缓存(文件 - >无效缓存/重启)修复了我的问题。不需要从JUnit和Mockito中排除Hamcrest。