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

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

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


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

11

Use lo siguiente (de Hamcrest):

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

En Kotlin isestá reservado, así que use:

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

¿Hay alguna alternativa en la que no tengamos que escapar is?
VIN
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.