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


147

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

например

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

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

Ответы:


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
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.