Я хотел бы написать утверждение юнита, которое выражает: «целое число X должно быть от 10 до 17», но я не могу найти простой способ сделать это. Мне действительно нужно реализовать пользовательский Matcher? Мне нужно сообщение об ошибке, которое сообщает мне, что такое фактическое значение.Утверждение целочисленного диапазона в junit?
1
A
ответ
1
AssertJ имеет соединитель isBetween(a, b)
, встроенный в его AbstractIntegerAssert. Простой тест, который читается как естественный язык даст содержательный отчет об ошибке «бесплатно»:
Integer x = 5;
assertThat(x).isBetween(10, 17);
Выход:
java.lang.AssertionError:
Expecting:
<5>
to be between:
[10, 17]
4
Что случилось с:
int high = 17;
int low = 10;
assertTrue(myInteger + " is not in [" + low + ", " + high + "]",
myInteger >= low && myInteger <= high);
?
Если вы используете это более одного раза, воспользуйтесь им.
Вы можете включить MyInteger в «Мои сообщения», в соответствии с просьбой ОП. :) –
@AndreasGnyp да, это хорошая идея :) –
@ReutSharabani: если вы следуете этой линии мышления, все потребности API - это «fail (msg)» или, возможно, 'assertTrue (c, msg)'. Все другие методы, такие как 'assertEquals (один, два, msg)', не нужны. Учитывая, что они существуют ... Наверное, я понимаю, что API действительно неравномерен, и не только я не нахожу вызов. –