Question

Je suis relativement nouveau pour les matchers. Je bricole avec hamcrest en combinaison avec JUnit et moi, je l'aime bien.

Existe-t-il un moyen d'indiquer qu'un choix parmi plusieurs est correct?

Quelque chose comme

assertThat( result, is( either( 1, or( 2, or( 3 ) ) ) ) ) //does not work in hamcrest

La méthode que je teste renvoie un élément d'une collection. La liste peut contenir plusieurs candidats. Mon implémentation actuelle renvoie le premier résultat, mais ce n'est pas une exigence. J'aimerais que mon test soit un succès, si l'un des candidats possibles est renvoyé. Comment exprimeriez-vous cela en Java?

(Je suis ouvert aux alternatives de hamcrest)

Était-ce utile?

La solution

assertThat(result, anyOf(equalTo(1), equalTo(2), equalTo(3)))

De didacticiel Hamcrest :

  

anyOf - correspond si des correspondants correspondent, des circuits courts (comme Java ||)

Voir aussi Javadoc .

De plus, vous pouvez écrire votre propre Matcher, ce qui est assez facile à faire.

Autres conseils

Marcos a raison, mais vous avez également deux autres options. Tout d’abord, il y a un / ou:

assertThat(result, either(is(1)).or(is(2)));

mais si vous avez plus de deux éléments, cela deviendra probablement difficile à manier. De plus, le vérificateur de typage devient parfois bizarre avec ce genre de choses. Pour votre cas, vous pourriez faire:

assertThat(result, isOneOf(1, 2, 3))

ou si vous avez déjà vos options dans un tableau / Collection:

assertThat(result, isIn(theCollection))

Voir aussi Javadoc .

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top