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
并且内置JUnit
了assert,所以这不是全新的东西.请在此处查看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)
JUnit
(当然,假设您使用的是JUnit)对此断言没有直接支持,但是您可以使用:
assertTrue("blabla".equalsIgnoreCase("BlabLA"))
Run Code Online (Sandbox Code Playgroud)
可能值得将其包装在单独的帮助程序方法中,如果它们不匹配,则该方法会提供明智的失败消息(assertTrue
请参阅文档以了解如何完成此操作)。
关于什么:
assertEquals("blabla","BlabLA".toLowerCase());
Run Code Online (Sandbox Code Playgroud)
要么
assertEquals(expectedLowerCaseString,actualString.toLowerCase());
Run Code Online (Sandbox Code Playgroud)
如果它们不相等,你仍然可以看到差异.