Hamcrest hasItem не соответствует ArrayList

В настоящее время я тестирую 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)
    ...

person Rey Libutan    schedule 24.03.2014    source источник
comment
Это может помочь.   -  person devnull    schedule 24.03.2014
comment
Обычно это происходит, когда вы импортировали разные версии Hamcrest-all, Hamcrest-core или они конфликтуют с Hamcrest, поставляемым с JUnit. Попробуйте использовать JUnit-dep (тот, у которого нет зависимостей).   -  person John B    schedule 24.03.2014


Ответы (1)


Я провел локальный тест, и у меня он отлично работает, используя 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"));
    }
}

Не могли бы вы попробовать еще раз, используя те же версии библиотек и импорты, что и я?

person Harmlezz    schedule 24.03.2014