2017-08-08 5 views
0

Ce test ne fonctionne pasLes meilleures pratiques pour vérifier en option à l'aide hamcrest

assertThat(bundle.getMyObj(), equalTo(Optional.absent())); 

Au début, je viens d'utiliser un objet commun. (Ne pas utiliser en option <> encore)

private MyObj myObj; 

Le test se présente comme suit

assertThat(myBundle.getMyObj(), nullValue()); 

Le changement que je myObj à

private Optional<MyObj> myObj = Optional.absent(); 

Puis j'ai changé mon test à

assertThat(bundle.getTracking(), equalTo(Optional.absent())); 

Puis j'ai eu un e rror

java.lang.AssertionError: 
Expected: <Optional.absent()> 
    but: was <Optional.of([email protected])> 
Expected :<Optional.absent()> 

Actual :<Optional.of([email protected])> 

J'essaie aussi le code ci-dessous mais erreur de compilation se

assertThat(myBundle.getMyObj(), equalTo(Optional.of(MyObj))); 
+0

Vous pouvez vérifier si en option 'isEmpty()' ou non – ByeBye

+0

est que la meilleure pratique? – UmAnusorn

+0

Il est plus verbeux et plus court – ByeBye

Répondre

1

Ce message:

java.lang.AssertionError: 
Expected: <Optional.absent()> 
but: was <Optional.of([email protected])> 
Expected :<Optional.absent()> 
Actual :<Optional.of([email protected])> 

dit que votre objet Optional est pas vide. Il semble que bundle.getTracking() renvoie non vide facultatif.

Aussi, si vous voulez vérifier si l'option est vide ou pas dans votre test, je vous recommande d'utiliser la méthode isPresent().

Au lieu de assertThat(bundle.getTracking(), equalTo(Optional.absent())) il suffit d'utiliser assertTrue(bundle.getTracking().isPresent())

+0

maintenant je vérifie nonNull() et essaye de le vérifier spécifiquement ainsi j'ajoute assertequalTo (Optional.absent()) et puis vérifie .isPresent() .. peut être que je ne devrais pas vérifier equalTo (Optional.absent()) – UmAnusorn