Je me demandais si quelqu'un connaissait un moyen de vérifier si une liste est vide en utilisant assertThat()
et Matchers
?
La meilleure façon que je pourrais voir utiliser JUnit:
assertFalse(list.isEmpty());
Mais j'espérais qu'il y avait un moyen de faire cela à Hamcrest.
java
collections
junit
hamcrest
Ian Dallas
la source
la source
Réponses:
Eh bien, il y a toujours
... mais je suppose que ce n'est pas tout à fait ce que vous vouliez dire :)
Alternativement:
empty()
est un statique dans laMatchers
classe. Notez la nécessité de lancer lelist
toCollection
, grâce aux génériques loufoques de Hamcrest 1.2.Les importations suivantes peuvent être utilisées avec hamcrest 1.3
la source
assertThat((Collection)list, is(not(empty())));
expected true but got false
vous obtenez quelque chose commeexpected empty but got [1, 2, 3]
assertThat(list, Matchers.<String>empty())
(en supposant que la liste est une collection deString
s)Ceci est corrigé dans Hamcrest 1.3. Le code ci-dessous se compile et ne génère aucun avertissement:
Mais si vous devez utiliser une version plus ancienne - au lieu de bugger,
empty()
vous pouvez utiliser:hasSize(greaterThan(0))
(
import static org.hamcrest.number.OrderingComparison.greaterThan;
ouimport static org.hamcrest.Matchers.greaterThan;
)Exemple:
La chose la plus importante à propos des solutions ci-dessus est qu'elles ne génèrent aucun avertissement. La deuxième solution est encore plus utile si vous souhaitez estimer la taille minimale des résultats.
la source
assertThat(list, not(hasSize(0)))
cela réussira silist
c'estnull
, par opposition àassertThat(list, hasSize(greaterThan(0)))
Si vous recherchez des messages d'échec lisibles, vous pouvez vous passer de hamcrest en utilisant les assertEquals habituels avec une liste vide:
Par exemple, si vous exécutez
vous obtenez
la source
Créez votre propre IsEmpty TypeSafeMatcher personnalisé:
Même si les problèmes génériques sont résolus dans
1.3
le grand avantage de cette méthode, c'est qu'elle fonctionne sur n'importe quelle classe qui a uneisEmpty()
méthode! Pas seulementCollections
!Par exemple, cela fonctionnera
String
aussi!la source
Cela marche:
la source