2017-11-09 1 views
1

Junit 단위 테스트를 Spring BootMockito과 함께 사용하려고합니다.AssertThat이 일치하는 목록에 대한 오류를 반환 함

하지만 다음 오류가 발생합니다. 나는 오류 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)

+0

질문을 편집하여 외부 소스를 사용하지 마십시오. 모래밭. 또,'JobPartRecentActivity'의 소스 코드도 추가합니다. – Progman

+0

물론 .. 허용한다면 알겠습니다. – sromit

+1

일치하는 목록이라고 말하면서 분명히 JUnit은 동의하지 않습니다. 어떤 증거도없이 JUnit과 함께 할 것입니다. – shmosel

답변

1

당신은 JobPartRecentActivityequalshashcode를 추가 할주의 때문에 assertThat (. .., is (...)); 객체가 equalshashcode이 아닌 경우 참조로 비교하십시오.

+0

JobPartRecentActivity에는 같음 및 해시 코드가 있습니다. – sromit

0

문제는 날짜와 관련이 있습니다. 그것은 타임 스탬프를 비교합니다. 예상 데이터 개체가 만들어지고 실제 데이터 개체가 만들어지면 실제로 시간차가 있습니다. 날짜 코드를 제거하면 어설 션이 제대로 작동합니다.

관련 문제