gpt4 book ai didi

java - JUnit:是否可以在任何断言函数中输出多行消息?

转载 作者:行者123 更新时间:2023-12-01 18:48:01 26 4
gpt4 key购买 nike

当有断言时,我尝试获取多行消息。例如我有以下代码:

<小时/>

errLog = "错误!结果中未找到帐户名称\n 预期结果:"+ acctName + "\n"+ "实际结果:"+ 输出 + "\n";

assertTrue(errLog, output.contains(accountType));

<小时/>

在运行时从应用程序检索输出,acctName 是传入的一些数据。

我得到的结果是:
错误!在结果中找不到帐户名称预期结果:Name123实际结果:我的名字是Name456类型:junit.framework.AssertionFailedError

我期望的结果是:
错误!在结果中找不到帐户名称
预期结果:Name123
实际结果:我的名字是Name456
类型:junit.framework.AssertionFailedError

我在网上到处查找,但似乎我读到的每个示例都只是用于输出单行消息。那么,是否不能使用现有的断言函数来执行多行消息呢?我知道我可能可以重写断言函数来满足我的需要,但作为 JUnit 的新手,我想先问问周围也没什么坏处。 提前致谢

最佳答案

我怀疑这可能取决于您的 IDE - 我刚刚在 IntelliJ IDEA 12 中运行了以下命令:

@Test
public void testABC() {
assertTrue("This\nis\na\ntest", false);
}

回来了:

java.lang.AssertionError: This
is
a
test
at org.junit.Assert.fail(Assert.java:91)
at org.junit.Assert.assertTrue(Assert.java:43)

最简单(也更易读)的方法是编写一个从输出中提取帐户类型的函数,并在断言中使用它:

assertEquals(acctName, extractAccountNameFromOutput(output));

如果测试失败,它将为您提供标准的 JUnit 输出。当测试失败时,您希望输出能够立即被理解,因此最好不要更改 JUnit 提供的默认输出样式。

关于java - JUnit:是否可以在任何断言函数中输出多行消息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16881180/

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