Я пишу некоторый тест класса JUnit / Aqruillian, чтобы проверить некоторые методы персистентности с Hibernate. Поэтому мне нужно получить много списков сущностей Hibernate из БД и, чтобы лучше написать свои тесты, я использую фреймворк JUnit Hamcrest.
В данный момент я хотел бы использовать комбинируемые сопоставители, в частности, или / или. Я знаю, что мог бы заменить его методом anyOf()
, но из-за разборчивости моего кода я бы предпочел комбинируемые сопоставления.
Я не могу понять, как использовать or()
метод. Вот простой пример:
@Test
public void EitherOrMatcherSimple() {
List<String> keywords = Arrays.asList("1");
assertThat(keywords, CombinableMatcher.either(empty()).
or(nullValue()).
or(both(hasItem("1")).and(hasItem("2"))));
}
Таким образом, я всегда получаю сообщение об ошибке от Eclipse, например:
The method or(Matcher<? super Collection<? extends Object>>) in the type CombinableMatcher<Collection<? extends Object>> is not applicable for the arguments (CombinableMatcher<Iterable<? super String>>)
Итак, я не понимаю, как использовать этот метод, а также то, что он ожидает в качестве аргументов. Я знаю, что .or()
метод имеет Matcher<? super X> other
в качестве аргумента, который для меня неясен.
Я просто знал, что / или оба / и были введены методы для лучшего написания и чтения условий Java с операторами &&
и ||
.
Кто-нибудь, пожалуйста, объясните мне?