I’m facing the following scenario:
I have an app that spits everything out to the STDOUT (simple company test) and I’m trying to JUnit this.
My problem is, when I run the application, it returns me in the Console: (copy and pasted from IntelliJ)
Id 1234 nao encontrado 123, R$ 441,00 321, R$ -8490,00 255, R$ 884,00
Print:
And my test is:
assertEquals(outContent.toString().trim(),"Id 1234 nao encontradon" + "123, R$ 441,00n" + "321, R$ -8490,00n" + "255, R$ 884,00");
I’m getting:
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)
So, what I am doing wrong here ?
Testing with JUnit4 and assertJ 2.4.0
Advertisement
Answer
The visible characters are identical, but the non-printable characters are not.
You are comparing expected output containing CRLF (rn
) to actual output with just LF (n
). You can see that in IntelliJ above the right-hand side of both text areas.
Simple solution is to replace the n
‘s in your string with rn
. Or remove r
from the other.
It is also worth noting that the parameter ordering is actually (Object expected, Object actual)
, so the outContent
should go second since that is the “actual” output.