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匹配器内置于JUnitJUnit具有内置的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 。 与使用assertTrueexpected 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