Jak stwierdzić, że coś jest nieważne z Hamcrestem?

144

Jak bym assertThatcoś takiego null?

na przykład

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

Ale pojawia się błąd mówiąc, że nie mogę mieć nullw is(null).

user2811419
źródło

Odpowiedzi:

256

Możesz użyć IsNull.nullValue()metody:

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

assertThat(attr.getValue(), is(nullValue()));
Rohit Jain
źródło
mówi, że metoda nullValue () nie jest zdefiniowana
user2811419
2
@ user2811419. Musisz zaimportować IsNullTo statyczna metoda w tej klasie. Po prostu zrób static importlub użyj IsNull.nullValue().
Rohit Jain
Dodaj import static org.hamcrest.core.IsNull.nullValue;do swojej klasy.
Rohit Jain
4
W nowszych wersjach Hamcrest przestrzeń nazw uległa zmianie i potrzebujesz import static org.hamcrest.CoreMatchers.nullValue.
Thomas W
30

dlaczego nie użyć assertNull(object)/ assertNotNull(object)?

Chetya
źródło
8
+1 Generalnie wolę asercje Hamscresta, ale jest to jeden przypadek, w którym asercja Junit jest po prostu bardziej czytelna, IMO.
spaaarky21
9
assertThat () zapewnia znacznie lepsze rejestrowanie niż wiele innych metod assert *. Z tego powodu standard kodowania testów, którego używam, faworyzuje assertThat () przed wszystkimi innymi metodami asercji.
efelton
3
Główną zaletą używania assertThat vs assertNul jest to, że jest bliżej wyrażenia mówionego w języku angielskim, po prostu spróbuj przeczytać dowolne ze swoich twierdzeń, aby je sprawdzić.
belgoros
Korzystanie z errorCollector jest dobrym powodem, aby używać dopasowań hamcrest w przeciwieństwie do assertNull / assertNotNull.
Tyler MacMillan
15

Jeśli chcesz hamcrest, możesz to zrobić

import static org.hamcrest.Matchers.nullValue;

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

W Junitmożna zrobić

import static junit.framework.Assert.assertNull;
assertNull(object);
Sajan Chandran
źródło
11

Użyj następujących (z Hamcrest):

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

W Kotlinie isjest zarezerwowany, więc użyj:

assertThat(attr.getValue(), `is`(nullValue()));
czarna pantera
źródło
Czy istnieje alternatywa, w której nie musimy uciec is?
VIN