Як стверджувати, що з Hamcrest щось недійсне?


144

Як би я assertThatщось таке null?

наприклад

 assertThat(attr.getValue(), is(""));

Але я отримую помилку про те , що я не можу мати nullв is(null).

Відповіді:


256

Ви можете використовувати IsNull.nullValue()метод:

import static org.hamcrest.Matchers.is;
import static org.hamcrest.Matchers.nullValue;

assertThat(attr.getValue(), is(nullValue()));

там сказано, що метод nullValue () не визначений
користувач2811419

2
@ user2811419. Вам потрібно імпортувати IsNullЦе статичний метод у цьому класі. Просто зробіть static importабо використовуйте IsNull.nullValue().
Rohit Jain

Додайте import static org.hamcrest.core.IsNull.nullValue;до свого класу.
Rohit Jain

4
У нових версіях Hamcrest простір імен змінився і вам потрібно import static org.hamcrest.CoreMatchers.nullValue.
ThomasW

30

чому б не використовувати assertNull(object)/ assertNotNull(object)?


8
+1 Я, як правило, віддаю перевагу твердженням Hamscrest, але це один випадок, коли твердження про Джуніт є просто читабельнішим, IMO
spaaarky21

9
assertThat () дають набагато кращий журнал, ніж багато інших методів assert *. Стандарт тестового кодування, який я використовую, надає перевагу assertThat () над усіма іншими методами твердження з цієї причини.
efelton

3
Основна перевага при використанні assertThat vs assertNul полягає в тому, що він ближче до англомовної фрази, просто спробуйте прочитати будь-яке ваше твердження, щоб перевірити його.
belgoros

Використання errorCollector є вагомою причиною для використання сімейників hаcrest, протилежних assertNull / assertNotNull.
Тайлер Макміллан

15

Якщо хочете hamcrest, можете зробити

import static org.hamcrest.Matchers.nullValue;

assertThat(attr.getValue(), is(nullValue()));

У Junitвас можна зробити

import static junit.framework.Assert.assertNull;
assertNull(object);

11

Використовуйте наступне (від Hamcrest):

assertThat(attr.getValue(), is(nullValue()));

У Котліні isзарезервовано, тому використовуйте:

assertThat(attr.getValue(), `is`(nullValue()));

Чи є альтернатива, де нам не доведеться бігти is?
VIN
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.