Утверждение Хэмкреста о двух значениях
Я легко могу сделать утверждение с двумя возможными результатами:
assertThat(result, anyOf(true, false)); // just a sample, doesn't make sense as an assertion
Однако мне нужно подтвердить, что один из моих результатов равен некоторому значению:
assertThat(result1 || result2, is(true));
Выше работает, но сообщение об ошибке не говорит, какой результат был false
, Есть ли что-то похожее на приведенное ниже в Хэмкресте?
assertThat(anyOf(result1, result2), is(true)); // just a hypothetical assertion
1 ответ
Вы можете написать утверждение в обратном порядке:
assertThat(true, anyOf(is(result1), is(result2)))
Это все равно выдаст ошибку подтверждения, когда либо result1
или же result2
не true
и сообщение сообщит оба окончательных значения или result1
а также result2
... в ожидаемой части, что делает его немного неловким.
Из вашего вопроса:
Однако мне нужно подтвердить, что один из моих результатов равен некоторому значению:
Это означает, что ваш реальный вариант использования определяет, имеет ли список ваших результатов заданное значение. Это может быть четко выражено с помощью:
assertThat(Arrays.asList(result1, result2), hasItem(true));
Это говорит о том, что список, образованный двумя результатами, имеет заданный элемент. Если этого не произойдет, ошибка утверждения будет:
Expected: a collection containing <true>
but: was <false>, was <false>
Сообщение сообщает вам значение каждого элемента в коллекции.