【发布时间】:2014-03-24 09:25:21
【问题描述】:
我目前正在测试hasItem() Matcher,但无济于事。请看下面的示例代码:
List<String> list = new ArrayList<String>();
list.add("1");
list.add("2");
list.add("3");
org.junit.Assert.assertThat(list, hasItem("3"));
它产生
java.lang.NoSuchMethodError: org.hamcrest.Matcher.describeMismatch(Ljava/lang/Object;Lorg/hamcrest/Description;)V
at org.hamcrest.core.IsCollectionContaining.matchesSafely(IsCollectionContaining.java:31)
at org.hamcrest.core.IsCollectionContaining.matchesSafely(IsCollectionContaining.java:14)
at org.hamcrest.TypeSafeDiagnosingMatcher.matches(TypeSafeDiagnosingMatcher.java:55)
at org.hamcrest.MatcherAssert.assertThat(MatcherAssert.java:12)
at org.junit.Assert.assertThat(Assert.java:865)
at org.junit.Assert.assertThat(Assert.java:832)
...
【问题讨论】:
-
This 可能会有所帮助。
-
这通常发生在您导入了不同版本的 Hamcrest-all、Hamcrest-core 或与 JUnit 自带的 Hamcrest 冲突时。尝试使用 JUnit-dep(没有依赖的那个)。
标签: java unit-testing junit hamcrest