2015-02-02 4 views
2

저는 스프링 부트, 스프링 통합, gradle 프로젝트를 작업 중입니다. 그리고 저는 비누 서비스를 조롱하기 위해 junit과 Mockito를 사용하고 있습니다. 그리고 기본적으로 나는이 세 가지 수업을 내 응용 프로그램에 사용합니다. Junit 비누 서비스 조롱을위한 클래스.mockito를 사용하여 객체를 조롱 할 때 null 포인터 예외가 발생합니다.

@Before 
public void setup() { 
    gw=Mockito.mock(ProjectGateway.class); 
    pc=new ProjectController(); 
    pc.setGateWay(gw); 
} 

@Test 
public void testGetProject() throws Exception { 
    GetAuthorizedWebSendTransferProjects mockRequest=new GetAuthorizedWebSendTransferProjects(); 
    GetAuthorizedWebSendTransferProjectsResponse mockResponse=getMockResponse(); 
    when(gw.getResponse(mockRequest)).thenReturn(mockResponse); 
    List<Project> projects=pc.getProject(); 
    assertEquals(1,projects.size()); 
}` 

및 soap 서비스를 호출하는 인터페이스.

`public interface ProjectGateway { 

public GetAuthorizedWebSendTransferProjectsResponse getResponse(
     GetAuthorizedWebSendTransferProjects request); 

} '

내가 단위 테스트를 할 필요가되는 방법.

@RequestMapping(value = "/projects", method = RequestMethod.GET, produces = "application/json") 
public @ResponseBody List<Project> getProject() { 
    GetAuthorizedWebSendTransferProjects request = new GetAuthorizedWebSendTransferProjects(); 
    GetAuthorizedWebSendTransferProjectsResponse response = gw 
      .getResponse(request); 
    JAXBElement<ArrayOfProjectContainer> arr = response 
      .getGetAuthorizedWebSendTransferProjectsResult(); 
    ArrayOfProjectContainer arr1 = arr.getValue(); 
    List<ProjectContainer> arr2 = arr1.getProjectContainer(); 
    List<Project> projects = getPopulatedProjectList(arr2); 
    return projects; 
} 

그러나 "List projects = pc.getProject();"에서 nullpointerexception이 발생합니다. 시험 방법의 아무도이 문제에서 나를 도울 수 없습니까? 미리 감사드립니다.

+0

는 스택 추적을 제공합니다. 디버깅 해 봤어? 'pc'는 null인가,'getProject' 내의 NPE입니까? –

+0

NPE가 발생한 지점에 대한 오해의 소지가있는 진술에 대해 -1 점을 뽑습니다. – JimmyB

답변

2

가짜에 의해 예상되는 request의 인스턴스가 실제로 전달 된 인스턴스와 일치하지 않는 것이 문제입니다. 따라서 조건이 일치하지 않으며 모의가 null을 반환합니다.

사용

when(mock.getResponse(
     Mockito.isA(GetAuthorizedWebSendTransferProjects.class))) 
     .thenReturn(...) 
+0

안녕하세요, 감사합니다. 정확히 당신이 지정한대로 npe를 받고 있습니다. 아직도 내가해야 할 일은 어떤 종류의 구성이냐고. 이 바보 같은 질문에 대해 유감스럽게 생각합니다. 나는 단위 테스트와 조롱에 아주 새롭다. – Pramod

+0

내 게시물에 넣을 때 'isA'를 사용하십시오. –

+0

존 감사합니다. 지금은 잘 작동하고 있습니다. – Pramod

관련 문제