junit assertEquals忽略大小写

时间:2013-07-15 10:28:11

标签: java unit-testing testing junit junit4

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

"blabla".equals("BlabLA")

返回true。

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

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

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

8 个答案:

答案 0 :(得分:18)

我发现Hamcrest提供的断言必须比默认的JUnit断言更好。 Hamcrest提供了更多选项,并在失败时提供更好的消息。一些基本的Hamcrest匹配器内置于JUnit中,JUnit内置assertThat,因此这不是全新的内容。请参阅hamcrest.core API here中的JUnit包。试试看起来像这样的IsEqualIgnoringCase

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

使用静态导入时,这将是

assertThat(myString, equalToIgnoringCase(expected));

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

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

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

答案 1 :(得分:13)

使用

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

然后你可以使用

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

答案 2 :(得分:5)

怎么样:

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

assertEquals(expectedLowerCaseString,actualString.toLowerCase());

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

答案 3 :(得分:4)

你看过String JavaDoc吗?

"blabla".equalsIgnoreCase("BlabLA")

答案 4 :(得分:4)

您可以使用assertTrue(s1.equalsIgnoreCase(s2))

答案 5 :(得分:4)

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

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

可能值得将其包装在一个单独的帮助器方法中,如果它们不匹配,则会提供合理的失败消息(查看assertTrue的文档以了解如何完成此操作)。

答案 6 :(得分:3)

考虑AssertJ(以前的FEST)你的断言,它是多年来我最喜欢的测试断言API:

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

答案 7 :(得分:1)

检查string doc:

中的equalsIgnoreCase