У меня есть параметризованный тест, один из параметров является логическим, чтобы показать, должен ли тест проходить или терпеть неудачу.
В моем тесте у меня есть следующее:
Параметры выглядят так: {0, 1, true}
Метод тестирования содержит:
if (expectedResult) { assertThat (myList, matchesUsingMyCustomMatcher (otherList)); } else { assertThat (myList, not (matchesUsingMyCustomMatcher (otherList.subList (начало, конец)))); }
То, что я не хочу делать, это написать оператор if-else. Таким образом, мой вопрос: есть ли условный соединитель? Например: assertThat(myList, ifMatcher(expected, matchesUsingMyCustomMatcher(otherList)));
Как вы можете проверить из исходного кода, условие не делает трюк. Вы можете играть с логическими условиями следующим образом:
assertThat(myList,
either( allOf(is(expectedResult), matchesUsingMyCustomMatcher(otherList)) )
.or( allOf(not(is(expectedResult)), not(matchesUsingMyCustomMatcher(otherList.subList(start, end))) ) )
);
Но позвольте мне сказать, что я не могу представить себе тест, в котором вы не знаете, является ли значение флага истинным или ложным. Если оба сценария могут произойти, два теста должны быть записаны.
anyOf
в сочетании сnot
согласованями?Condition
описан по адресу hamcrest.org/JavaHamcrest/javadoc/1.3 . Может быть, это то, что вам нужно?