junit assertEquals忽略大小写

Erk*_* M. 21 java testing junit unit-testing junit4

我只是从c# - > java移动.我需要使用junit编写一些测试.在我的测试中,我需要比较两个字符串,看看它们是否匹配.所以我们也有Assert.assertEquals,但这是区分大小写的.我怎样才能使它不区分大小写?我需要的是:

"blabla".equals("BlabLA")
Run Code Online (Sandbox Code Playgroud)

返回真实.

所以在C#中,我们曾经有:

public static void AreEqual (
    string expected,
    string actual,
    bool ignoreCase,
    string message
)
Run Code Online (Sandbox Code Playgroud)

我很快就通过Junit文档,但我似乎无法找到这样的东西.

Joh*_*n B 20

我发现Hamcrest必须提供比默认JUnit断言更好的断言.Hamcrest提供了更多选项,并在失败时提供更好的消息.一些基本的Hamcrest匹配器内置JUnit并且内置JUnitassert,所以这不是全新的东西.请在此处查看API中的hamcrest.core包.尝试IsEqualIgnoringCase,它看起来像这样.JUnit

assertThat(myString, IsEqualIgnoringCase.equalToIgnoringCase(expected));
Run Code Online (Sandbox Code Playgroud)

使用静态导入,这将是

assertThat(myString, equalToIgnoringCase(expected));
Run Code Online (Sandbox Code Playgroud)

如果你想得到真正的幻想,你会做:

assertThat(myString, is(equalToIgnoringCase(expected)));
Run Code Online (Sandbox Code Playgroud)

这样做的一个优点是失败会说明这一点expected someString but was someOtherString.与expected true got false使用时相反assertTrue.


Ruc*_*era 14

使用

"blabla".equalsIgnoreCase("BlabLA") use for check equality ignore case
Run Code Online (Sandbox Code Playgroud)

然后你可以使用

 assertTrue("blabla".equalsIgnoreCase("BlabLA"))
Run Code Online (Sandbox Code Playgroud)


rob*_*cox 5

JUnit(当然,假设您使用的是JUnit)对此断言没有直接支持,但是您可以使用:

assertTrue("blabla".equalsIgnoreCase("BlabLA"))
Run Code Online (Sandbox Code Playgroud)

可能值得将其包装在单独的帮助程序方法中,如果它们不匹配,则该方法会提供明智的失败消息(assertTrue请参阅文档以了解如何完成此操作)。


mmi*_*ldt 5

关于什么:

assertEquals("blabla","BlabLA".toLowerCase());
Run Code Online (Sandbox Code Playgroud)

要么

assertEquals(expectedLowerCaseString,actualString.toLowerCase());
Run Code Online (Sandbox Code Playgroud)

如果它们不相等,你仍然可以看到差异.