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.