컨트롤러에 대한 테스트를 만들려고합니다. 다음은 내가 비슷한 점입니다. 그냥 이름 변경. 나는 Mockito와 Spring MVC를 사용하고있다. 테스트 구성 파일에는 모의 팩토리를 통해 모의 처리 된 자동 작성 빈이 있습니다. 나는이 문제를 해결하기 위해 내가 뭘하고 있니?
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations={
...
})
public class MyReportControllerTest {
private MockHttpServletRequest request;
private MockHttpServletResponse response;
private MockHttpSession session;
private HandlerAdapter handlerAdapter;
@Autowired
private ApplicationContext applicationContext;
@Autowired
private MyService myService;
@Autowired
private RequestMappingHandlerMapping rmhm;
@Before
public void setUp() throws Exception {
request = new MockHttpServletRequest();
response = new MockHttpServletResponse();
session = new MockHttpSession();
handlerAdapter = applicationContext
.getBean(RequestMappingHandlerAdapter.class);
request.setSession(session);
request.addHeader("authToken", "aa");
Mockito.when(
myService.getMyInfo(YEAR))
.thenReturn(getMyInfoList());
}
@Test
public void testGetMyInfo(){
request.setRequestURI("/getMyInfo/" + 2011);
request.setMethod("GET");
try {
if(handlerAdapter == null){
System.out.println("Handler Adapter is null!");
}
if(request == null){
System.out.println("Request is null!");
}
if(response == null){
System.out.println("Response is null!");
}
if(rmhm.getHandler(request) == null){
System.out.println("rmhm.getHandler(request) is null!");
}
//the above returns null
System.out.println("RMHM: " + rmhm.toString());
System.out.println("RMHM Default Handler: " + rmhm.getDefaultHandler());
handlerAdapter.handle(request, response,
rmhm.getHandler(request)
.getHandler());//null pointer exception here <---
...
} catch (Exception e) {
e.printStackTrace();
fail("getMyReport failed. Exception");
}
}
public List<MyInfo> getMyInfoList(){...}
나는 철저한 디버깅을 수행하고 핸들러 내 모의 요청에 대해 널 (null) 남아있는 것을 발견했다 ... 널 포인터를 얻는다. 내가 처리기로 바뀌지 않거나 기본 처리기로 간다는 것을 무엇이 놓치고 있습니까?
통합 테스트가 원래입니다. 테스트의 의도에 대한 설명없이 기본 코드를 받았습니다. 나중에 서비스를 통합 할 수 있도록 서비스를 조롱 할 수 없다는 것을 알고 있습니다. 컨트롤러의 bean이 테스트 설정 파일에 생성되지 않았다고 간단히 놓쳤습니다. 내가 한 일은 그것을 추가하는 것뿐이었습니다. – user1281598