Comment affirmer que quelque chose est nul avec Hamcrest?


144

Comment pourrais-je assertThatquelque chose null?

par exemple

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

Mais je reçois une erreur disant que je ne peux pas avoir nulldans is(null).

Réponses:


256

Vous pouvez utiliser la IsNull.nullValue()méthode:

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

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

il dit que la méthode nullValue () n'est pas définie
user2811419

2
@ user2811419. Vous devez importer IsNullC'est une méthode statique dans cette classe. Faites simplement static import, ou utilisez IsNull.nullValue().
Rohit Jain

Ajoutez import static org.hamcrest.core.IsNull.nullValue;à votre classe.
Rohit Jain

4
Dans les nouvelles versions de Hamcrest, l'espace de noms a changé et vous en avez besoin import static org.hamcrest.CoreMatchers.nullValue.
ThomasW

30

pourquoi ne pas utiliser assertNull(object)/ assertNotNull(object)?


8
+1 Je préfère généralement les assertions de Hamscrest mais c'est un cas où l'assertion de Junit est juste plus lisible, IMO.
spaaarky21

9
assertThat () donne une journalisation bien meilleure que la plupart des autres méthodes assert *. La norme de codage de test que j'utilise favorise assertThat () par rapport à toutes les autres méthodes d'assertion pour cette raison.
efelton

3
Le principal avantage lorsque vous utilisez assertThat vs assertNul est qu'il est plus proche d'une phrase parlée en anglais, essayez simplement de lire l'une de vos affirmations pour la vérifier.
belgoros

L'utilisation d'un errorCollector est une bonne raison d'utiliser les matchers hamcrest opposés à assertNull / assertNotNull.
Tyler MacMillan

15

Si tu veux hamcrest, tu peux faire

import static org.hamcrest.Matchers.nullValue;

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

Dans Junitvous pouvez faire

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

11

Utilisez ce qui suit (de Hamcrest):

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

Dans Kotlin isest réservé alors utilisez:

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

Y a-t-il une alternative où nous n'avons pas à échapper à la is?
VIN du
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.