Хамкрест условные спички?

1

У меня есть параметризованный тест, один из параметров является логическим, чтобы показать, должен ли тест проходить или терпеть неудачу.

В моем тесте у меня есть следующее:

Параметры выглядят так: {0, 1, true}

Метод тестирования содержит:

 if (expectedResult) {
assertThat (myList, matchesUsingMyCustomMatcher (otherList));
 } else {
assertThat (myList, not (matchesUsingMyCustomMatcher (otherList.subList (начало, конец))));
 }

То, что я не хочу делать, это написать оператор if-else. Таким образом, мой вопрос: есть ли условный соединитель? Например: assertThat(myList, ifMatcher(expected, matchesUsingMyCustomMatcher(otherList)));

  • 0
    Не уверен , что я правильно вас понимаю, но ... математически, «если а , то Ь» эквивалентен «(не) или б», поэтому он будет работать , чтобы использовать anyOf в сочетании с not согласованями?
  • 0
    Класс Condition описан по адресу hamcrest.org/JavaHamcrest/javadoc/1.3 . Может быть, это то, что вам нужно?
Показать ещё 1 комментарий
Теги:
hamcrest

1 ответ

1
Лучший ответ

Как вы можете проверить из исходного кода, условие не делает трюк. Вы можете играть с логическими условиями следующим образом:

assertThat(myList,  
     either( allOf(is(expectedResult), matchesUsingMyCustomMatcher(otherList)) ) 
     .or( allOf(not(is(expectedResult)), not(matchesUsingMyCustomMatcher(otherList.subList(start, end))) ) ) 
         );

Но позвольте мне сказать, что я не могу представить себе тест, в котором вы не знаете, является ли значение флага истинным или ложным. Если оба сценария могут произойти, два теста должны быть записаны.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню