java - Hamcrest hasItem 在 ArrayList 中不匹配

标签 java unit-testing junit hamcrest

我目前正在测试 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)
    ...

最佳答案

我做了一个本地测试,使用 JUnit-4.11 和 Hamcrest-Core-1.3 对我来说效果很好:

import java.util.ArrayList;
import java.util.List;

import org.hamcrest.core.IsCollectionContaining;
import org.junit.Test;

public class Example {
    @Test public void test() {
        List<String> list = new ArrayList<String>();
        list.add("1");
        list.add("2");
        list.add("3");
        org.junit.Assert.assertThat(list, IsCollectionContaining.hasItem("3"));
    }
}

您可以使用与我相同的库版本和导入再试一次吗?

关于java - Hamcrest hasItem 在 ArrayList 中不匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22605369/

相关文章:

java - 在 Ant 中为 jUnit 任务设置编码

java - 从 Maven 运行 Java 应用程序的更简单方法?

node.js - Mocha + Chai 命令行退出,错误代码编号等于测试失败计数

c# - 我应该明确断言计数还是结果?

ios - 将单元测试目标添加到现有 Xcode 项目,无法在 bundle 中找到资源

java - 为什么要使用 Mockito?

android - Android 单元测试的最佳实践?

java - 使用有效 URL 在 HttpsUrlConnection 上重置连接

java - 无法解析的日期异常 MM/dd/yyyy hh :mm:ss a z

java - 如果返回值是可变的,为什么要使用 getter 和 setter?