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).

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()));

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)?


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);

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()));

Czy istnieje alternatywa, w której nie musimy uciec is?
VIN
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.