Как утверждать, что что-то не имеет значения с помощью Hamcrest?

147

Как бы мне assertThatчто-то было null?

например

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

Но я получаю ошибку о том , что я не могу иметь nullв is(null).

user2811419
источник

Ответы:

261

Вы можете использовать IsNull.nullValue()метод:

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

assertThat(attr.getValue(), is(nullValue()));
Рохит Джайн
источник
он говорит, что метод nullValue () не определен
user2811419
2
@ user2811419. Вам нужно импортировать IsNullстатический метод в этот класс. Просто сделай static importили используй IsNull.nullValue().
Рохит Джайн
Добавьте import static org.hamcrest.core.IsNull.nullValue;в свой класс.
Рохит Джайн,
5
В более новых версиях Hamcrest пространство имен изменилось, и вам нужно import static org.hamcrest.CoreMatchers.nullValue.
ThomasW
30

почему бы не использовать assertNull(object)/ assertNotNull(object)?

Четя
источник
8
+1 Я обычно предпочитаю утверждения Hamscrest, но это тот случай, когда утверждение Junit просто более читабельно, ИМО.
spaaarky21
9
assertThat () обеспечивает гораздо лучшее ведение журнала, чем многие другие методы assert *. По этой причине стандарт тестового кодирования, который я использую, отдает предпочтение assertThat () над всеми другими методами утверждения.
efelton
3
Основное преимущество использования assertThat vs assertNul в том, что оно ближе к английской разговорной фразе, просто попробуйте прочитать любое из ваших утверждений, чтобы проверить это.
belgoros 06
Использование errorCollector - хороший повод использовать сопоставители hamcrest вместо 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