我刚从c#移动 - > java的。我需要使用junit编写一些测试。 在我的测试中,我需要比较两个字符串,看看它们是否匹配。 所以我们也有Assert.assertEquals,但这是区分大小写的。我怎样才能使它不区分大小写? 我需要的是:
"blabla".equals("BlabLA")
返回true。
所以在C#中,我们曾经有过:
public static void AreEqual (
string expected,
string actual,
bool ignoreCase,
string message
)
我很快就通过Junit文档,但我似乎找不到这样的东西。
答案 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