je viens de passer de c # -> Java. J'ai besoin d'écrire des tests en utilisant junit. Dans mon test, j'ai besoin de comparer deux chaînes pour voir si elles correspondent. Nous avons donc également Assert.assertEquals, mais cela est sensible à la casse. Comment puis-je le rendre insensible à la casse? Ce dont j'ai besoin c'est:
"blabla".equals("BlabLA")
pour retourner vrai.
Donc en C #, nous avions auparavant:
public static void AreEqual (
string expected,
string actual,
bool ignoreCase,
string message
)
J'allais rapidement à travers les documents Junit, mais je n'arrive pas à trouver quelque chose comme ça.
Je trouve que Hamcrest fournit de meilleures assertions que les assertions par défaut JUnit
. Hamcrest offre BEAUCOUP PLUS d'options et fournit de meilleurs messages en cas d'échec. Certains appariements de base Hamcrest
sont intégrés à JUnit
et JUnit
a le assertThat intégré donc ce n'est pas quelque chose de totalement nouveau. Voir le hamcrest.core
package dans l'API JUnit
ici . Essayez IsEqualIgnoringCase qui ressemblerait à ceci.
assertThat(myString, IsEqualIgnoringCase.equalToIgnoringCase(expected));
Avec des importations statiques, ce serait
assertThat(myString, equalToIgnoringCase(expected));
si vous voulez devenir vraiment chic, vous feriez:
assertThat(myString, is(equalToIgnoringCase(expected)));
L'un des avantages de ceci est qu'un échec indiquerait que expected someString but was someOtherString
. Par opposition à expected true got false
lors de l'utilisation de assertTrue
.
Utilisation
"blabla".equalsIgnoreCase("BlabLA") use for check equality ignore case
Ensuite, vous pouvez utiliser
assertTrue("blabla".equalsIgnoreCase("BlabLA"))
Il n'y a pas de support direct pour cette assertion dans JUnit
(en supposant que vous utilisez JUnit bien sûr), mais vous pouvez utiliser:
assertTrue("blabla".equalsIgnoreCase("BlabLA"))
Il peut être utile d'envelopper cela dans une méthode d'assistance distincte qui fournit un message d'échec sensible si elles ne correspondent pas (regardez les documents pour assertTrue
pour voir comment cela pourrait être fait).
Qu'en est-il de:
assertEquals("blabla","BlabLA".toLowerCase());
ou
assertEquals(expectedLowerCaseString,actualString.toLowerCase());
Ensuite, vous pouvez toujours voir la différence si elles ne sont pas égales.
Avez-vous regardé le String
JavaDoc ?
"blabla".equalsIgnoreCase("BlabLA")
Vous pouvez utiliser assertTrue(s1.equalsIgnoreCase(s2))
Considérez AssertJ (auparavant FEST) pour vos assertions, c'est mon API d'assertion préférée pour les tests depuis des années:
assertThat("blabla").isEqualToIgnoringCase("BlabLA");
Vérifiez le equalsIgnoreCase
du string doc: