Como afirmar que algo é nulo no Hamcrest?

144

Como eu assertThatalguma coisa é null?

por exemplo

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

Mas eu recebo um erro dizendo que eu não posso ter nullno is(null).

user2811419
fonte

Respostas:

256

Você pode usar o IsNull.nullValue()método:

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

assertThat(attr.getValue(), is(nullValue()));
Rohit Jain
fonte
ele diz que o método nullValue () não está definido
user2811419
2
@ user2811419. Você precisa importar IsNullÉ um método estático nessa classe. Basta fazer static importou usar IsNull.nullValue().
Rohit Jain 24/09
Adicione import static org.hamcrest.core.IsNull.nullValue;à sua turma.
Rohit Jain 24/09
4
Nas versões mais recentes do Hamcrest, o espaço para nome foi alterado e você precisa import static org.hamcrest.CoreMatchers.nullValue.
Thomasw
30

por que não usar assertNull(object)/ assertNotNull(object)?

Chetya
fonte
8
+1 Geralmente, prefiro as afirmações de Hamscrest, mas esse é um caso em que a afirmação de Junit é apenas mais legível, IMO.
spaaarky21
9
assertThat () fornece um registro muito melhor do que muitos dos outros métodos assert *. O padrão de codificação de teste que eu uso favorece assertThat () sobre todos os outros métodos de asserção por esse motivo.
Efelton 23/04
3
A principal vantagem ao usar assertThat vs assertNul é que ele está mais próximo de uma frase falada em inglês, apenas tente ler qualquer uma de suas afirmações para verificar.
belgoros
Usar um errorCollector é um bom motivo para usar os correspondentes de hamcrest opostos ao assertNull / assertNotNull.
Tyler MacMillan
15

Se você quiser hamcrest, você pode fazer

import static org.hamcrest.Matchers.nullValue;

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

Em Junitvocê pode fazer

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

Use o seguinte (do Hamcrest):

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

No Kotlin isé reservado, então use:

assertThat(attr.getValue(), `is`(nullValue()));
Pantera negra
fonte
Existe uma alternativa em que não precisamos escapar da is?
VIN