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 encontrado\n" +
"123, R$ 441,00\n" +
"321, R$ -8490,00\n" +
"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
IIRC assertEquals() succeeds if both strings are null. If this is not what you want then call assertNotNull() as well.
assertEquals() The assertEquals() method compares two objects for equality, using their equals() method.
assertEquals. Asserts that two objects are equal. If they are not, an AssertionError is thrown with the given message. If expected and actual are null , they are considered equal.
assertEquals() Asserts that two objects are equal. assertSame() Asserts that two objects refer to the same object. the assertEquals should pass and assertSame should fail, as the value of both classes are equal but they have different reference location.
The visible characters are identical, but the non-printable characters are not.
You are comparing expected output containing CRLF (\r\n
) 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 \r\n
. 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.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With