1

I am trying to do a Junit unit test in Spring Boot with Mockito.

But I am getting the following error. I am not able to figure out what is going wrong from the error Codesnippet: https://pastebin.com/RDUXk5QF

public List<JobPartRecentActivity> jobPartRecentActivityList() {

        Date timestamp = new Date();
        JobPartRecentActivity jobData = new JobPartRecentActivity();
        jobData.setCommments("TestComments");
        jobData.setEventId(1234L);
        jobData.setJobNumber(1234L);
        jobData.setTagNumber(1L);
        jobData.setSerialNumber("6789");
        jobData.setPartNumber("12345");
        jobData.setOperationName("Receiving");
        jobData.setOperationSequence(1L);
        jobData.setOperationCode("02");
        jobData.setPartStatus("COMPLETE");
        jobData.setTimestamp(timestamp);
        jobData.setSystemActionTaken("Done");

        List<JobPartRecentActivity> dataList = new ArrayList<>();
        for (int i = 0; i < 3; i++) {
            dataList.add(jobData);
        }

        return dataList;

    }

    @Test
    public void testremoveDuplicateEntries() throws Exception {
        //setup
        List<JobPartRecentActivity> actualdataList = new ArrayList<>();
        Date timestamp = new Date();
        JobPartRecentActivity jobDataActual = new JobPartRecentActivity();
        jobDataActual.setCommments("TestComments");
        jobDataActual.setEventId(1234L);
        jobDataActual.setJobNumber(1234L);
        jobDataActual.setTagNumber(1L);
        jobDataActual.setSerialNumber("6789");
        jobDataActual.setPartNumber("12345");
        jobDataActual.setOperationName("Receiving");
        jobDataActual.setOperationSequence(1L);
        jobDataActual.setOperationCode("02");
        jobDataActual.setPartStatus("COMPLETE");
        jobDataActual.setTimestamp(timestamp);
        jobDataActual.setSystemActionTaken("Done");
        actualdataList.add(jobDataActual);
        //execute
        List<JobPartRecentActivity> expecteddataList = new ArrayList<>();
        expecteddataList = eventEngine.removeDuplicateEntries(jobPartRecentActivityList());
        //verify
        assertThat(actualdataList, is(expecteddataList));

    }
}

--

Error: java.lang.AssertionError: Expected: is <[JobPartRecentActivity [rnum=null, eventId=1234, jobNumber=1234, tagNumber=1, serialNumber=6789, partNumber=12345, operationSequence=1, operationName=Receiving, operationCode=02, partStatus=COMPLETE, comments=TestComments, changeMadeBy=null, timestamp=Thu Nov 09 16:11:42 CST 2017, systemActionTaken=Done]]> but: was <[JobPartRecentActivity [rnum=null, eventId=1234, jobNumber=1234, tagNumber=1, serialNumber=6789, partNumber=12345, operationSequence=1, operationName=Receiving, operationCode=02, partStatus=COMPLETE, comments=TestComments, changeMadeBy=null, timestamp=Thu Nov 09 16:11:42 CST 2017, systemActionTaken=Done]]> at org.hamcrest.MatcherAssert.assertThat(MatcherAssert.java:20) at org.junit.Assert.assertThat(Assert.java:956) at org.junit.Assert.assertThat(Assert.java:923) at com.ge.power.brs.engines.impl.EventEngineTests.testremoveDuplicateEntries(EventEngineTests.java:172) 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:498) at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50) at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12) at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47) at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17) at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26) at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325) at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78) at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57) at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290) at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71) at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288) at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58) at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268) at org.junit.runners.ParentRunner.run(ParentRunner.java:363) at org.mockito.internal.runners.JUnit45AndHigherRunnerImpl.run(JUnit45AndHigherRunnerImpl.java:37) at org.mockito.runners.MockitoJUnitRunner.run(MockitoJUnitRunner.java:62) at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:86) at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:459) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:678) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:382) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:192)

5
  • Please edit your question to include the source code, don't use external links. Also, add the source code of JobPartRecentActivity as well. Commented Nov 9, 2017 at 22:21
  • Sure..Let me see, if it allows Commented Nov 9, 2017 at 22:25
  • 1
    You're telling us it's a matching list, but clearly JUnit disagrees. Without any evidence either way, I'm going to side with JUnit. Commented Nov 9, 2017 at 22:25
  • Sure..JUnit is correct, but need to know whats wrong Commented Nov 9, 2017 at 22:29
  • We can't help without a minimal reproducible example. Commented Nov 10, 2017 at 9:22

2 Answers 2

1

You heed to add equals and hashcode to JobPartRecentActivity, because assertThat(..., is(...)); compare by reference if object doesn't have equals and hashcode.

Sign up to request clarification or add additional context in comments.

Comments

0

The issue is with Date. It is comparing timestamp. When the expecteddatalist object is created and the actualdatalist object is created, there is indeed a time difference.Once we remove the Date code, the assertThat is working fine

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.