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

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

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


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

11

Use o seguinte (do Hamcrest):

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

No Kotlin isé reservado, então use:

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

Existe uma alternativa em que não precisamos escapar da is?
VIN
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.