Приведение к Коллекции может работать, но оно делает некоторые предположения о базовых реализациях Коллекции (например, порядок?). Более общим подходом было бы написать свой собственный сопоставитель.
Вот почти полная реализация matcher, которая делает то, что вы хотите (вам нужно заполнить метод import и descriptionTo). Обратите внимание, что эта реализация требует, чтобы все элементы двух коллекций были равны, но не обязательно в том же порядке.
public class IsCollectionOf<T> extends TypeSafeMatcher<Collection<T>> {
private final Collection<T> expected;
public IsCollectionOf(Collection<T> expected) {
this.expected = expected;
}
public boolean matchesSafely(Collection<T> given) {
List<T> tmp = new ArrayList<T>(expected);
for (T t : given) {
if (!tmp.remove(t)) {
return false;
}
return tmp.isEmpty();
}
// describeTo here
public static <T> Matcher<Collection<T>> ofItems(T... items) {
return new IsCollectionOf<T>(Arrays.asList(items));
}
}