Tôi có một dự án Android sử dụng Mockito, Hamcrest và Espresso để giúp kiểm tra.Cấu hình gradle để sử dụng JUnit, Mockito, Hamcrest và Espresso
Không có vấn đề gì tôi thử với tệp xây dựng Gradle, tôi nhận được NoSuchMethodError
cho org.hamcrest.Matcher.anyOf
khi tôi thử chạy thử nghiệm sau khi thực hiện gradle androidTestCompile
.
Dưới đây là cấu hình hiện tại của tôi:
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'
)
Tôi đã thử viết lại các yêu cầu JUnit Mockito và để loại trừ hamcrest như vậy:
androidTestCompile('junit:junit:4.11') {
exclude group: 'org.hamcrest'
}
Nhưng điều này không thực hiện bất kỳ sự khác biệt.
Dự án GameCore
là một dự án Java thuần túy. Nó cũng có các phụ thuộc vào JUnit và Mockito, nhưng khi chúng được chỉ định là testCompile
, tôi không nghĩ chúng nên can thiệp.
Kết quả cho gradle dependencies
cho mô-đun này cho 'androidTestCompile` là:
+--- 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
Sửa
Có thêm điều tra vấn đề này, tôi thấy rằng cà phê cần hamcrest 1.1, nhưng tôi cũng sử dụng assertThat, trong Hamcrest 1.3. Hamcrest 1.3 không có phương pháp anyOf mà espresso sử dụng. Vì vậy, tôi đoán tôi đang bị mắc kẹt :)
Bạn có thể chạy 'phụ thuộc gradle' trên mô-đun đó và đăng đầu ra cho tác vụ có liên quan không? –