gpt4 book ai didi

java - AssertEquals(String, String) 内容相同时比较失败

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:06:08 27 4
gpt4 key购买 nike

我面临以下情况:

我有一个应用程序可以将所有内容输出到 STDOUT(简单的公司测试),我正在尝试使用 JUnit。

我的问题是,当我运行该应用程序时,它会在控制台中返回给我:(从 IntelliJ 复制粘贴)

Id 1234 nao encontrado
123, R$ 441,00
321, R$ -8490,00
255, R$ 884,00

打印:

enter image description here

我的测试是:

assertEquals(outContent.toString().trim(),"Id 1234 nao encontrado\n" +
"123, R$ 441,00\n" +
"321, R$ -8490,00\n" +
"255, R$ 884,00");

我得到:

junit.framework.ComparisonFailure:  <Click to see difference>


at junit.framework.Assert.assertEquals(Assert.java:100)
at junit.framework.Assert.assertEquals(Assert.java:107)
at junit.framework.TestCase.assertEquals(TestCase.java:269)
at com.company.AccountManagerTest.testPrintAccountsBalance(AccountManagerTest.java:85)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:497)
at junit.framework.TestCase.runTest(TestCase.java:176)
at junit.framework.TestCase.runBare(TestCase.java:141)
at junit.framework.TestResult$1.protect(TestResult.java:122)
at junit.framework.TestResult.runProtected(TestResult.java:142)
at junit.framework.TestResult.run(TestResult.java:125)
at junit.framework.TestCase.run(TestCase.java:129)
at junit.framework.TestSuite.runTest(TestSuite.java:252)
at junit.framework.TestSuite.run(TestSuite.java:247)
at org.junit.internal.runners.JUnit38ClassRunner.run(JUnit38ClassRunner.java:86)
at org.junit.runner.JUnitCore.run(JUnitCore.java:137)
at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:69)
at com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:234)
at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:74)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:497)
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:144)

enter image description here

那么,我在这里做错了什么?

使用 JUnit4 和 assertJ 2.4.0 进行测试

最佳答案

可见字符相同,但不可打印字符不同。

您正在将包含 CRLF (\r\n) 的预期输出与仅包含 LF (\n) 的实际输出进行比较。在 IntelliJ 中,您可以在两个文本区域的右侧上方看到它。

简单的解决方案是将字符串中的 \n 替换为 \r\n。或者从另一个中删除 \r


还值得注意的是,参数顺序实际上是 (Object expected, Object actual),因此 outContent 应该排在第二位,因为这是“实际”输出.

关于java - AssertEquals(String, String) 内容相同时比较失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36324452/

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