26

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

"blabla".equals("BlabLA")

true を返します。

したがって、C# では、次のように使用されていました。

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

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

4

8 に答える 8

27

Hamcrestは、デフォルトのアサートよりも優れたアサーションを提供する必要があることがわかりましたJUnit。Hamcrest はさらに多くのオプションを提供し、失敗時のメッセージを改善します。いくつかの基本的なHamcrestマッチャーが組み込まれJUnitJUnitおり、assertThatが組み込まれているため、これはまったく新しいものではありません。ここでAPIのhamcrest.coreパッケージを参照してください。次のようなIsEqualIgnoringCaseを試してください。JUnit

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

静的インポートでは、これは次のようになります

assertThat(myString, equalToIgnoringCase(expected));

あなたが本当に派手になりたいなら、あなたはするでしょう:

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

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

于 2013-07-15T10:36:40.633 に答える
5

どうですか:

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

また

assertEquals(expectedLowerCaseString,actualString.toLowerCase());

それらが等しくない場合でも、違いを見ることができます。

于 2013-07-15T10:46:26.313 に答える
5

このアサートはJUnit(もちろん JUnit を使用していると仮定して) 直接サポートされていませんが、以下を使用できます。

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

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

于 2013-07-15T10:32:45.023 に答える
3

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

assertThat("blabla").isEqualToIgnoringCase("BlabLA");
于 2015-08-10T19:47:09.820 に答える
1

文字列ドキュメントequalsIgnoreCaseから確認してください:

于 2014-03-06T16:56:52.027 に答える