Мне было интересно, если кто-нибудь знает способ проверить, если список пуст, используя assertThat()
и Matchers
?
Лучший способ увидеть это - использовать JUnit:
assertFalse(list.isEmpty());
Но я надеялся, что есть какой-то способ сделать это в Хэмкресте.
java
collections
junit
hamcrest
Ян Даллас
источник
источник
Ответы:
Ну всегда есть
... но я предполагаю, что это не совсем то, что вы имели в виду :)
В качестве альтернативы:
empty()
это статика вMatchers
классе. Обратите внимание на необходимость броситьlist
кCollection
, благодаря Hamcrest 1.2 в шатких дженерик.Следующий импорт может быть использован с Hamcrest 1.3
источник
assertThat((Collection)list, is(not(empty())));
expected true but got false
тебя получается что-то вродеexpected empty but got [1, 2, 3]
assertThat(list, Matchers.<String>empty())
String
Это исправлено в Hamcrest 1.3. Приведенный ниже код компилируется и не генерирует никаких предупреждений:
Но если вам нужно использовать более старую версию - вместо прослушивания
empty()
вы можете использовать:hasSize(greaterThan(0))
(
import static org.hamcrest.number.OrderingComparison.greaterThan;
илиimport static org.hamcrest.Matchers.greaterThan;
)Пример:
Самая важная вещь о вышеупомянутых решениях - то, что это не генерирует никаких предупреждений. Второе решение еще более полезно, если вы хотите оценить минимальный размер результата.
источник
assertThat(list, not(hasSize(0)))
будет успешным, еслиlist
естьnull
, в отличие отassertThat(list, hasSize(greaterThan(0)))
Если вам нужны читаемые сообщения об ошибках, вы можете обойтись без hamcrest, используя обычные assertEquals с пустым списком:
Например, если вы бежите
ты получаешь
источник
Создайте свой собственный IsEmpty TypeSafeMatcher:
Даже если проблемы дженериков в
1.3
этом методе исправлены, он работает на любом классе, у которого естьisEmpty()
метод! Не толькоCollections
!Например, это будет работать на
String
!источник
Это работает:
источник