Общий assertThat (ArrayList, hasItems (InstanceOfSomeInterface)) не работает - PullRequest
5 голосов
/ 14 сентября 2011

Я хочу использовать Hamcrest hasItems с «фактической» коллекцией, которая является ArrayList<? extends SomeInterface> на

assertThat(ArrayList<? extends SomeInterface>, hasItems(InstanceOfSomeInterface))

, компилятор говорит:

Метод assertThat(T, Matcher<T>) в типе Assert не применимо для аргументов (ArrayList<capture#9-of ? extends MyInterface>, Matcher<Iterable<MyInterface>>)

что не так?Что я могу сделать с этим (я действительно хочу использовать Hamcrest здесь)?

1 Ответ

4 голосов
/ 14 сентября 2011
ArrayList<SomeInterface> newList = new ArrayList<SomeInterface>();
newList.addAll(origList);
assertThat(newList, hasItems(InstanceOfSomeInterface));

К сожалению, Assert.assertThat не был закодирован с использованием ? супер или ? расширяет , чтобы учесть то, что вы описываете.

...