web-dev-qa-db-fra.com

Comment affirmerCette chaîne n'est pas vide

Affirmer qu'un string n'est pas vide en junit peut être fait de la manière suivante:

 assertTrue(!string.isEmpty());
 assertFalse(string.isEmpty());
 assertThat(string.toCharArray(), is(not(emptyArray())); // (although this didn't compile)

Ma question est: y a-t-il une meilleure façon de vérifier cela - quelque chose comme:

assertThat(string, is(not(empty()))?

24
Armine

Dans hamcrest 1.3, vous pouvez utiliser Matchers # isEmptyString :

assertThat(string, not(isEmptyString()));

Dans hamcrest 2.0, vous pouvez utiliser Matchers # emptyString :

assertThat(string, is(not(emptyString())));

[~ # ~] update [~ # ~] - Notez que: "Maven central contient des artefacts supplémentaires appelés Java-hamcrest et hamcrest-Java, avec une version de 2.0.0.0. N'utilisez pas ces outils, ils constituent un effort avorté de reconditionnement des différents fichiers. " source: hamcrest.org/JavaHamcrest/distributables

44
holi-java

Vous pouvez utiliser la propre assertion assertNotEquals de JUnit:

Assert.assertNotEquals( "", string );
4
Stefan Birkner

J'utiliserais assertThat(string, is(not(equalTo("")))). Contrairement aux autres approches qui impliquent de vérifier le résultat des méthodes .length() ou .isEmpty() de la chaîne, le contenu de cette chaîne sera affiché dans le message d'erreur en cas d'échec du test.

( Edit: En fait, non, je ne le ferais pas. J'utiliserais le emptyString() ou isEmptyString() matcher comme expliqué dans réponse de holi-Java . Voter celui-là, pas celui-ci.)

3
Wyzard

Pensez à utiliser la méthode StringUtils.isNotEmpty () d'Apache, qui est une vérification null-safe d'une chaîne vide.

assertTrue(StringUtils.isNotEmpty(str));
3
entpnerd

Si vous utilisez déjà commons-lang vous pouvez le faire, ce qui vérifie également les valeurs nulles et blanches:

assertTrue(StringUtils.isNotBlank(string));

Comme décrit dans leurs javadocs:

isNotBlank: Vérifie si une CharSequence n'est pas vide (""), non nulle et pas uniquement d'espaces.

2
Russ Jackson

Écrivez votre propre classe TestHelper dans laquelle vous pouvez collecter des méthodes personnalisées pour les assertions, par exemple.

 public static void assertEmpty(String input) {...}
1
Matt

Vous pouvez également utiliser une bibliothèque appelée AssertJ , qui fournit d'excellentes assertions dans votre code. Check peut être fait avec élégance:

assertThat(myString).isNotEmpty();

1
Tomasz Bawor

Vous pouvez utiliser la méthode de bibliothèque de Google Guava Strings.isNullOrEmpty

À partir du JavaDoc

public statique boolean isNullOrEmpty (@Nullable String string)

Renvoie true si la chaîne donnée est null ou s'il s'agit d'une chaîne vide.

Pensez à normaliser vos références de chaîne avec nullToEmpty (Java.lang.String). Si vous le faites, vous pouvez utiliser String.isEmpty () à la place de cette méthode. Vous n'aurez pas non plus besoin de formes spéciales de méthodes null-safe, telles que String.toUpperCase (Java.util.Locale). Ou, si vous souhaitez normaliser "dans l'autre sens", en convertissant les chaînes vides en chaînes nulles, vous pouvez utiliser emptyToNull (Java.lang.String).

Paramètres :

string - une référence de chaîne à vérifier

Retourne :

true si la chaîne est nulle ou est la chaîne vide

1
Saikat Sengupta

Ce que vous voulez affirmer est la taille de votre chaîne.

assertThat("String is empty",
       string.length(),
       greaterThan(0));
0
Simulant