gpt4 book ai didi

junit4 - 用于大字符串比较的 assertThat 与 assertEquals

转载 作者:行者123 更新时间:2023-12-01 14:11:44 24 4
gpt4 key购买 nike

大家都说要用新的assertThat来自 Junit,但是,对于大字符串比较,它似乎缺少一些功能。

例子:

@Test
public void testAssertThat() throws Exception {
Assert.assertThat("auiehaeiueahuiheauihaeuieahuiaehuieahuaiehiaueheauihaeuihaeuiaehuiaehuiaehuiaehaeuihaei",
CoreMatchers.equalTo( "auiehaeiueahuiheauihaeuieahuiaehuieaheaiehiaueheauihaeuihaeuiaehuiaehuiaehuiaehaeuihaei" ) );
}

@Test
public void testAssertEquals() throws Exception {
Assert.assertEquals( "auiehaeiueahuiheauihaeuieahuiaehuieahuaiehiaueheauihaeuihaeuiaehuiaehuiaehuiaehaeuihaei",
"auiehaeiueahuiheauihaeuieahuiaehuieaheaiehiaueheauihaeuihaeuiaehuiaehuiaehuiaehaeuihaei" );
}
assertEquals打印更易于阅读的错误消息:

org.junit.ComparisonFailure: expected:<...uihaeuieahuiaehuieah[u]aiehiaueheauihaeuiha...> but was:<...uihaeuieahuiaehuieah[e]aiehiaueheauihaeuiha...>



assertThat打印这个:

java.lang.AssertionError: Expected: "auiehaeiueahuiheauihaeuieahuiaehuieaheaiehiaueheauihaeuihaeuiaehuiaehuiaehuiaehaeuihaei" but: was "auiehaeiueahuiheauihaeuieahuiaehuieahuaiehiaueheauihaeuihaeuiaehuiaehuiaehuiaehaeuihaei"



有没有办法用 assertThat 获得相同的行为? ?

最佳答案

友情留言org.junit.ComparisonFailure: expected...来自这样一个事实,即 JUnit 使用 assertEquals 和 String 作为输入的方式。
这样,如果字符串比较失败,Junit 就会抛出 org.junit.ComparisonFailure。

在您的 IDE 中,比较确实更具可读性。例如,在 Eclipse 中,您可以双击失败的 Junit 测试以显示字符串比较。

像这样 :

enter image description here

AssertThat 有不同的语义,javadoc 明确指出:Asserts that actual satisfies the condition specified by matcher. If not, an AssertionError is thrown with information about the matcher and failing value.顾名思义,AssertionError 具有更广泛的语义。

总结:如果你想保留字符串的友好信息,你应该继续使用 AssertEquals 进行字符串比较。

关于junit4 - 用于大字符串比较的 assertThat 与 assertEquals,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28236625/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com