Wie kann man behaupten, dass etwas mit Hamcrest null ist?

144

Wie würde ich assertThatetwas sein null?

beispielsweise

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

Aber ich erhalte eine Fehlermeldung, dass ich nicht haben kann nullin is(null).

user2811419
quelle

Antworten:

256

Sie können folgende IsNull.nullValue()Methode verwenden:

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

assertThat(attr.getValue(), is(nullValue()));
Rohit Jain
quelle
Es heißt, dass die Methode nullValue () nicht definiert ist
user2811419
2
@ user2811419. Sie müssen importieren IsNullEs ist eine statische Methode in dieser Klasse. Einfach machen static importoder benutzen IsNull.nullValue().
Rohit Jain
Fügen Sie import static org.hamcrest.core.IsNull.nullValue;Ihrer Klasse hinzu.
Rohit Jain
4
In neueren Versionen von Hamcrest hat sich der Namespace geändert und Sie benötigen import static org.hamcrest.CoreMatchers.nullValue.
ThomasW
30

warum nicht assertNull(object)/ verwenden assertNotNull(object)?

Chetya
quelle
8
+1 Ich bevorzuge im Allgemeinen Hamscrest-Behauptungen, aber dies ist ein Fall, in dem die Junit-Behauptung nur besser lesbar ist, IMO.
spaaarky21
9
assertThat () bietet eine viel bessere Protokollierung als viele andere assert * -Methoden. Der von mir verwendete Testcodierungsstandard bevorzugt aus diesem Grund assertThat () gegenüber allen anderen Assertionsmethoden.
Efelton
3
Der Hauptvorteil bei der Verwendung von assertThat gegenüber assertNul besteht darin, dass es näher an einer englischsprachigen Phrase liegt. Versuchen Sie einfach, eine Ihrer Behauptungen zu lesen, um sie zu überprüfen.
Belgoros
Die Verwendung eines errorCollector ist ein guter Grund, die Hamcrest-Matcher zu verwenden, die dem assertNull / assertNotNull entgegengesetzt sind.
Tyler MacMillan
15

Wenn Sie möchten, hamcrestkönnen Sie tun

import static org.hamcrest.Matchers.nullValue;

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

In können JunitSie tun

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

Verwenden Sie Folgendes (von Hamcrest):

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

In Kotlin isist reserviert, also verwenden Sie:

assertThat(attr.getValue(), `is`(nullValue()));
schwarzer Panther
quelle
Gibt es eine Alternative, bei der wir dem nicht entkommen müssen is?
Fahrgestellnummer