junit assertEquals忽略大小写
我只是从c# – > java移动。 我需要使用junit编写一些测试。 在我的测试中,我需要比较两个字符串,看看它们是否匹配。 所以我们也有Assert.assertEquals,但这是区分大小写的。 我怎样才能使它不区分大小写? 我需要的是:
"blabla".equals("BlabLA")
返回真实。
所以在C#中,我们曾经有:
public static void AreEqual ( string expected, string actual, bool ignoreCase, string message )
我很快就通过Junit文档,但我似乎无法找到这样的东西。
我发现Hamcrest必须提供比默认JUnit
断言更好的断言。 Hamcrest提供了更多选项,并在失败时提供更好的消息。 一些基本的Hamcrest
匹配器内置于JUnit
而JUnit
具有内置的assert ,因此这不是全新的。 请在hamcrest.core
查看JUnit
API中的hamcrest.core
包。 尝试IsEqualIgnoringCase ,它看起来像这样。
assertThat(myString, IsEqualIgnoringCase.equalToIgnoringCase(expected));
使用静态导入,这将是
assertThat(myString, equalToIgnoringCase(expected));
如果你想得到真正的幻想,你会做:
assertThat(myString, is(equalToIgnoringCase(expected)));
这样做的一个优点是失败会说明expected someString but was someOtherString
。 与使用assertTrue
时expected true got false
相反。
使用
"blabla".equalsIgnoreCase("BlabLA") use for check equality ignore case
然后你可以使用
assertTrue("blabla".equalsIgnoreCase("BlabLA"))
关于什么:
assertEquals("blabla","BlabLA".toLowerCase());
要么
assertEquals(expectedLowerCaseString,actualString.toLowerCase());
如果它们不相等,你仍然可以看到差异。
你看过String
JavaDoc了吗?
"blabla".equalsIgnoreCase("BlabLA")
你可以使用assertTrue(s1.equalsIgnoreCase(s2))
在JUnit
没有对此断言的直接支持(假设您当然使用JUnit),但您可以使用:
assertTrue("blabla".equalsIgnoreCase("BlabLA"))
可能值得将它包装在一个单独的帮助器方法中,如果它们不匹配则提供合理的失败消息(查看assertTrue
的文档以了解如何完成此操作)。
考虑AssertJ (以前称为 FEST)的断言,多年来它一直是我最喜欢的测试断言API:
assertThat("blabla").isEqualToIgnoringCase("BlabLA");
从字符串 doc检查equalsIgnoreCase
: