Tôi đang sử dụng JUnit-dep 4.10 và Hamcrest 1.3.RC2.
Tôi đã tạo một trình so khớp tùy chỉnh trông giống như sau:
public static class MyMatcher extends TypeSafeMatcher<String> {
@Override
protected boolean matchesSafely(String s) {
/* implementation */
}
@Override
public void describeTo(Description description) {
/* implementation */
}
@Override
protected void describeMismatchSafely(String item, Description mismatchDescription) {
/* implementation */
}
}
Nó hoạt động hoàn toàn tốt khi chạy từ dòng lệnh bằng Ant. Nhưng khi chạy từ IntelliJ, nó thất bại với:
java.lang.NoSuchMethodError: org.hamcrest.Matcher.describeMismatch(Ljava/lang/Object;Lorg/hamcrest/Description;)V
at org.hamcrest.MatcherAssert.assertThat(MatcherAssert.java:18)
at org.hamcrest.MatcherAssert.assertThat(MatcherAssert.java:8)
at com.netflix.build.MyTest.testmyStuff(MyTest.java:40)
Tôi đoán là nó đang sử dụng hamcrest sai.MatcherAssert. Làm cách nào để tìm hamcrest.MatcherAssert nào đang sử dụng (tức là tệp jar nào đang sử dụng cho hamcrest.MatcherAssert)? AFAICT, lọ hamcrest duy nhất trong đường dẫn lớp của tôi là 1.3.RC2.
IntelliJ IDEA có sử dụng bản sao của JUnit hoặc Hamcrest không?
Làm cách nào để tôi xuất CLASSPATH thời gian chạy mà IntelliJ đang sử dụng?