web-dev-qa-db-fra.com

junit assertEquals ignore le cas

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.

21
Erki M.

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 JUnitici . 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.

21
John B

Utilisation

"blabla".equalsIgnoreCase("BlabLA") use for check equality ignore case

Ensuite, vous pouvez utiliser

 assertTrue("blabla".equalsIgnoreCase("BlabLA"))
15

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).

5
robjohncox

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.

5
mmirwaldt

Avez-vous regardé le String JavaDoc ?

"blabla".equalsIgnoreCase("BlabLA")
4
jlordo

Vous pouvez utiliser assertTrue(s1.equalsIgnoreCase(s2))

4
dynamix

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");
3
orip

Vérifiez le equalsIgnoreCase du string doc:

1
user3141669