Come affermare che qualcosa è nullo con Hamcrest?


144

Come dovrei assertThatqualcosa null?

per esempio

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

Ma ottengo un errore che dice che non posso avere nullin is(null).

Risposte:


256

Puoi usare il IsNull.nullValue()metodo:

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

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

dice che il metodo nullValue () non è definito
user2811419

2
@ user2811419. Devi importare IsNullÈ un metodo statico in quella classe. Basta fare static importo usare IsNull.nullValue().
Rohit Jain,

Aggiungi import static org.hamcrest.core.IsNull.nullValue;alla tua classe.
Rohit Jain,

4
Nelle versioni più recenti di Hamcrest lo spazio dei nomi è cambiato ed è necessario import static org.hamcrest.CoreMatchers.nullValue.
ThomasW

30

perché non usare assertNull(object)/ assertNotNull(object)?


8
+1 In genere preferisco le asserzioni di Hamscrest, ma questo è un caso in cui l'affermazione di Junit è solo più leggibile, IMO.
spaaarky21

9
assertThat () offre una registrazione molto migliore rispetto a molti altri metodi assert *. Lo standard di codifica di test che utilizzo favorisce assertThat () rispetto a tutti gli altri metodi di asserzione per questo motivo.
efelton,

3
Il vantaggio principale quando si utilizza assertThat vs assertNul è che è più vicino a una frase parlata in inglese, basta provare a leggere una qualsiasi delle tue asserzioni per verificarla.
Belgoros,

L'uso di un errorCollector è una buona ragione per usare i matcher più aggressivi al contrario di assertNull / assertNotNull.
Tyler MacMillan,

15

Se vuoi hamcrest, puoi farlo

import static org.hamcrest.Matchers.nullValue;

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

In Junitte puoi fare

import static junit.framework.Assert.assertNull;
assertNull(object);

11

Utilizzare quanto segue (da Hamcrest):

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

In Kotlin isè riservato quindi usare:

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

Esiste un'alternativa in cui non dobbiamo sfuggire al is?
VIN,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.