Утверждение Хэмкреста о двух значениях

Я легко могу сделать утверждение с двумя возможными результатами:

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>

Сообщение сообщает вам значение каждого элемента в коллекции.

Другие вопросы по тегам