2016-07-31 7 views
0

을 테스트 내 코드를 autowire초기화는 TestNG의 단위 개체 그래서 여기

java.lang.AssertionError: 
     Expected: is "my name" 
     but: was null 

    at org.hamcrest.MatcherAssert.assertThat(MatcherAssert.java:20) 
    at org.hamcrest.MatcherAssert.assertThat(MatcherAssert.java:8)  
    at com.dev.impl.CodeImplTest.testGetCode(CodeImplTest.java:74) 

포럼에서 검색을 시도했지만 작동하지 않습니다.

도움이 될 것입니다.

감사합니다.

+0

는'Tested' @,이 답을 가지고에 대한 API 문서를보십시오. –

+0

좀 더 구체적으로 알려주시겠습니까? 나는 많은 게시물과 문서를 통해 독서를 시도했지만, 여전히 나를 위해 작동하지 않습니다. NPE에 빠졌거나 예외였습니다. –

+0

더 자세한 내용은 API 문서의 두 번째 단락의 두 번째 문장 인'@Tested'를 참조하십시오. "기본적으로 자동 생성은 테스트 메소드가 실행되기 바로 전에 발생합니다. . " –

답변

1

codeAppService.getOne()에 대한 동작 만 준비했지만 코드에서 해당 호출의 결과는 codeMapper.mapCode()으로 전달됩니다.

나는 시도 할 것이다 :

new NonStrictExpectations() {{ 
    mockedCodeAppService.getOne(anyString); 
    result = codeDTO; 
    mockedCodeMapper.mapCode(codeDTO); 
    result = codeDTO; 
}}; 
+0

두 번째 테스트를 할 필요가 없습니다. 왜냐하면 이것이 내가 테스트 한 동작 논리이기 때문입니다. –

+0

테스트를 정의한 방법은 CodeImpl 클래스에 @Tested를 두어 테스트 할 대상은 getCode ("1")를 호출 할 때 codeAppService.getOne (myId); 그리고 나서 codeMapper.mapCode (codeDTO)에 대한 호출; 완료되었습니다. 그래서 두 번째 것이 필요합니다. CodeMapper를 테스트하려면 해당 클래스에 대한 새 테스트를 만들어야합니다. – Alfergon