Я использую hamcrest 1.3. Его реализация matches(Object o, Description mismatch)
выглядит следующим образом:Strange AllOf описание несоответствия hamcrest описание
@Override
public boolean matches(Object o, Description mismatch) {
for (Matcher<? super T> matcher : matchers) {
if (!matcher.matches(o)) {
mismatch.appendDescriptionOf(matcher).appendText(" ");
matcher.describeMismatch(o, mismatch);
return false;
}
}
return true;
}
При описании несовпадения, то первым дописывает описание согласовани что не удалось, и только затем фактическое несоответствие. Это приводит к некоторому довольно странному сообщению.
Например, если я пишу:
Description description = new StringDescription();
allOf(lessThan(2)).describeMismatch(5, description);
System.out.println(description.toString());
Затем a value less than <2> <5> was greater than <2>
печатается консоль. Я ожидал бы только <5> was greater than <2>
, потому что это сообщение, которое возвращают другие ответчики, например. lessThan
используется отдельно.
Мой вопрос: это ошибка или я что-то упускаю?
Дело в том, Кажется, что я не могу использовать метод describeMismatch
для этой цели ...