web-dev-qa-db-ja.com

junit assertEqualsは大文字小文字を無視します

私はc#-> Javaから移動しています。 junitを使用していくつかのテストを作成する必要があります。私のテストでは、2つの文字列を比較して、それらが一致するかどうかを確認する必要があります。したがって、Assert.assertEqualsもありますが、これは大文字と小文字が区別されます。大文字と小文字を区別しないようにするにはどうすればよいですか?私が必要なのは:

"blabla".equals("BlabLA")

trueを返します。

したがって、C#では、以前は次のようにしました。

public static void AreEqual (
    string expected,
    string actual,
    bool ignoreCase,
    string message
)

私はすぐにJUnitのドキュメントを調べていましたが、このようなものを見つけることができません。

21
Erki M.

Hamcrest は、デフォルトのJUnitアサーションよりも優れたアサーションを提供する必要があることに気づきました。 Hamcrestは、非常に多くのオプションを提供し、失敗時のメッセージを改善します。いくつかの基本的なHamcrestマッチャーはJUnitに組み込まれ、JUnitには assertThat が組み込まれているため、これはまったく新しいものではありません。 hamcrest.coreJUnit AP​​Iのパッケージ here 。このように見える IsEqualIgnoringCase を試してください。

assertThat(myString, IsEqualIgnoringCase.equalToIgnoringCase(expected));

静的インポートでは、これは

assertThat(myString, equalToIgnoringCase(expected));

あなたが本当に空想を得たいなら、あなたはそうするでしょう:

assertThat(myString, is(equalToIgnoringCase(expected)));

これの利点の1つは、失敗するとexpected someString but was someOtherString。とは対照的に expected true got falseassertTrueを使用する場合。

21
John B

使用する

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

その後、使用できます

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

JUnitではこのアサートを直接サポートしていません(もちろんJUnitを使用していると想定しています)が、次のように使用できます。

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

これを別のヘルパーメソッドでラップすると、一致しない場合に適切なエラーメッセージが表示されます(assertTrueのドキュメントを参照して、この方法を確認してください)。

5
robjohncox

何について:

assertEquals("blabla","BlabLA".toLowerCase());

または

assertEquals(expectedLowerCaseString,actualString.toLowerCase());

次に、それらが等しくない場合でも、違いを確認できます。

5
mmirwaldt

String JavaDoc を見ましたか?

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

assertTrue(s1.equalsIgnoreCase(s2))を使用できます

4
dynamix

アサーションについて AssertJ (以前はFEST)を検討してください。これは、何年もの間テストで私のお気に入りのアサーションAPIでした。

assertThat("blabla").isEqualToIgnoringCase("BlabLA");
3
orip

string ドキュメントからequalsIgnoreCaseを確認します。

1
user3141669