Hamcrest 1.1沒有containsString
方法。找不到源(顯然,按照該comment on this commit,先前所生成的類),但是我們可以使用反編譯的類:
public class CoreMatchers {
public static <T> Matcher<T> is(Matcher<T> matcher) {
return Is.is(matcher);
}
public static <T> Matcher<T> is(T value) {
return Is.is(value);
}
public static Matcher<Object> is(Class<?> type) {
return Is.is(type);
}
public static <T> Matcher<T> not(Matcher<T> matcher) {
return IsNot.not(matcher);
}
public static <T> Matcher<T> not(T value) {
return IsNot.not(value);
}
public static <T> Matcher<T> equalTo(T operand) {
return IsEqual.equalTo(operand);
}
public static Matcher<Object> instanceOf(Class<?> type) {
return IsInstanceOf.instanceOf(type);
}
public static <T> Matcher<T> allOf(Matcher... matchers) {
return AllOf.allOf(matchers);
}
public static <T> Matcher<T> allOf(Iterable<Matcher<? extends T>> matchers) {
return AllOf.allOf(matchers);
}
public static <T> Matcher<T> anyOf(Matcher... matchers) {
return AnyOf.anyOf(matchers);
}
public static <T> Matcher<T> anyOf(Iterable<Matcher<? extends T>> matchers) {
return AnyOf.anyOf(matchers);
}
public static <T> Matcher<T> sameInstance(T object) {
return IsSame.sameInstance(object);
}
public static <T> Matcher<T> anything() {
return IsAnything.anything();
}
public static <T> Matcher<T> anything(String description) {
return IsAnything.anything(description);
}
public static <T> Matcher<T> any(Class<T> type) {
return IsAnything.any(type);
}
public static <T> Matcher<T> nullValue() {
return IsNull.nullValue();
}
public static <T> Matcher<T> nullValue(Class<T> type) {
return IsNull.nullValue(type);
}
public static <T> Matcher<T> notNullValue() {
return IsNull.notNullValue();
}
public static <T> Matcher<T> notNullValue(Class<T> type) {
return IsNull.notNullValue(type);
}
public static <T> Matcher<T> describedAs(String description, Matcher<T> matcher, Object... values) {
return DescribedAs.describedAs(description, matcher, values);
}
}
無法在中央回購找到1.2版,but 1.3確實定義該方法(和其他一些)。
JUnit 4.11(和4.12)已經引用了Hamcrest 1.3,但mockito-1.9.5 references v1.1(滾動到依賴關係)。您還可以通過運行mvn dependency:tree
看到這一點:
[INFO] \- org.mockito:mockito-core:jar:1.9.5:compile
[INFO] +- org.hamcrest:hamcrest-core:jar:1.1:compile
[INFO] \- org.objenesis:objenesis:jar:1.0:compile
---------------
[INFO] +- junit:junit:jar:4.11:compile
[INFO] | \- org.hamcrest:hamcrest-core:jar:1.3:compile
沒有看到實際的POM我不能說怎麼樣,但不知何故,1.1版的優先級高於1.3,無論是明確的,或者也許是的Mockito宣佈在你的POM之前JUnit的。所以,你可以嘗試換你的POM的JUnit和秩序的Mockito,或明確定義Hamcrest 1.3直接覆蓋的傳遞版本:
<dependency>
<groupId>org.hamcrest</groupId>
<artifactId>hamcrest-all</artifactId>
<version>1.3</version>
<scope>test</scope>
</dependency>