我有一个使用Mockito,Hamcrest和Espresso帮助测试的Android项目。配置gradle使用JUnit,Mockito,Hamcrest和Espresso
无论我尝试使用Gradle构建文件,在gradle androidTestCompile
之后尝试运行我的测试时,我得到NoSuchMethodError
为org.hamcrest.Matcher.anyOf
。
这里是我当前的配置:
dependencies {
compile project(':GameCore')
androidTestCompile files(
'libs/espresso-1.1.jar',
'libs/testrunner-1.1.jar',
'libs/testrunner-runtime-1.1.jar'
)
androidTestCompile(
'junit:junit:4.11',
'org.mockito:mockito-core:1.10.0',
'com.google.guava:guava:14.0.1',
'com.squareup.dagger:dagger:1.1.0',
'com.google.dexmaker:dexmaker:1.0',
'com.google.dexmaker:dexmaker-mockito:1.0',
'org.hamcrest:hamcrest-core:1.3',
'org.hamcrest:hamcrest-library:1.3'
)
我试图重写的Mockito和JUnit要求排除Hamcrest像这样:
androidTestCompile('junit:junit:4.11') {
exclude group: 'org.hamcrest'
}
但是这并没有什么差别。
GameCore
项目是一个纯Java项目。它也依赖于JUnit和Mockito,但是他们被指定为testCompile
,我不认为它们应该是干涉的。
此模块“androidTestCompile`的输出gradle dependencies
是:
+--- junit:junit:4.11
| \--- org.hamcrest:hamcrest-core:1.3
+--- org.mockito:mockito-core:1.10.0
| +--- org.hamcrest:hamcrest-core:1.1 -> 1.3
| \--- org.objenesis:objenesis:2.1
+--- com.google.guava:guava:14.0.1
+--- com.squareup.dagger:dagger:1.1.0
| \--- javax.inject:javax.inject:1
+--- com.google.dexmaker:dexmaker:1.0
+--- com.google.dexmaker:dexmaker-mockito:1.0
| +--- com.google.dexmaker:dexmaker:1.0
| \--- org.mockito:mockito-core:1.9.5 -> 1.10.0 (*)
+--- org.hamcrest:hamcrest-core:1.3
\--- org.hamcrest:hamcrest-library:1.3
\--- org.hamcrest:hamcrest-core:1.3
编辑
有进一步研究的问题,我看到咖啡需要Hamcrest 1.1,但我也使用assertThat,这在Hamcrest 1.3中。 Hamcrest 1.3没有espresso使用的anyOf方法。所以我想我被卡住:)
你可以在该模块上运行'gradle dependencies'并发布相关任务的输出吗? – 2014-11-05 22:34:05