¿Cómo afirmar que algo es nulo con Hamcrest?

144

¿Cómo sería assertThatalgo null?

por ejemplo

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

Pero me da un error que dice que no puedo tener nullen is(null).

usuario2811419
fuente

Respuestas:

256

Puedes usar el IsNull.nullValue()método:

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

assertThat(attr.getValue(), is(nullValue()));
Rohit Jain
fuente
se dice nullValue método () no está definido
user2811419
2
@ usuario2811419. Necesitas importar IsNullEs un método estático en esa clase. Solo hazlo static importo úsalo IsNull.nullValue().
Rohit Jain
Agrega import static org.hamcrest.core.IsNull.nullValue;a tu clase.
Rohit Jain
44
En las versiones más recientes de Hamcrest, el espacio de nombres ha cambiado y lo necesita import static org.hamcrest.CoreMatchers.nullValue.
ThomasW
30

¿Por qué no usar assertNull(object)/ assertNotNull(object)?

Chetya
fuente
8
+1 Generalmente prefiero las afirmaciones de Hamscrest, pero este es un caso en el que la afirmación de Junit es más legible, en mi opinión.
spaaarky21
9
afirmar que () proporciona un registro mucho mejor que muchos de los otros métodos de aserción *. El estándar de codificación de prueba que utilizo favorece afirmar que () sobre todos los demás métodos de afirmación por este motivo.
efelton
3
La principal ventaja cuando se utiliza afirmarThat vs afirmaciónNul es que está más cerca de una frase hablada en inglés, solo intente leer cualquiera de sus afirmaciones para verificarla.
belgoros
El uso de un errorCollector es una buena razón para usar los comparadores de Hamcrest opuestos al afirmar / nulo / nulizar.
Tyler MacMillan
15

Si quieres hamcrest, puedes hacerlo

import static org.hamcrest.Matchers.nullValue;

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

En lo Junitque puedes hacer

import static junit.framework.Assert.assertNull;
assertNull(object);
Sajan Chandran
fuente
11

Use lo siguiente (de Hamcrest):

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

En Kotlin isestá reservado, así que use:

assertThat(attr.getValue(), `is`(nullValue()));
Pantera negra
fuente
¿Hay alguna alternativa en la que no tengamos que escapar is?
VIN