2017-01-09 19 views
-2

Я пытаюсь писать тесты для контроллера конечных точек для следующих контроллеровЯ новичок в JUnit testing.i я не в состоянии писать успешные тестовые случаи и тестовый случай я создаю возвращаюсь на исключение из NullPointer

@RestController 
@RequestMapping("/agent/") 
public class AgentRestController extends BaseRestController { 

    @RequestMapping(value = "/log/{revisionId}/", method = RequestMethod.PUT) 
    public ResponseEntity<?> log(@PathVariable("revisionId") String revisionId, @RequestBody LogMessage message) { 

     ConfigurationRevision cr = configurationRevisionRepository.findOne(revisionId); 
     BackupLog log = new BackupLog(message); 
     log.setRevision(cr); 
     backupLogRepository.save(log); 

     return new ResponseEntity<>(HttpStatus.CREATED); 
    } 

    @RequestMapping("/config") 
    @ResponseBody 
    public AgentConfig getConfiguration(HttpServletRequest request) { 
     AgentConfig cfg = getAgentConfigByIP(request.getRemoteAddr()); 
     LogMessage log = new LogMessage(); 
     log.level = LogLevel.INFO; 
     log.date = System.currentTimeMillis(); 
     log.msg = "SYSTEM: Configuration retrieved by client"; 

     // log the configuration retrieval 
     log(cfg.id, log); 
     return cfg; 
    } 

} 

Я пытаюсь писать тесты JUnit для этих контроллеров

@RunWith(SpringJUnit4ClassRunner.class) 
@SpringApplicationConfiguration(classes = { Application.class }) 
@WebAppConfiguration 
public class ApiControllerTest { 

    private MockMvc mockMvc; 

    @Autowired 
    private WebApplicationContext webApplicationContext; 

    @Before 
    public void setup() throws Exception { 
     this.mockMvc = webAppContextSetup(webApplicationContext).build(); 
    } 

    @Test 
    public void getConfigurationSuccess() throws Exception { 

     mockMvc.perform(get("/agent/config").accept(MediaType.APPLICATION_JSON)).andExpect(status().is2xxSuccessful()); 

    } 

} 

Это StackTrace

org.springframework.web.util.NestedServletException: Request processing failed; nested exception is java.lang.NullPointerException 
    at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:980) 
    at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:859) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:622) 
    at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:844) 
    at org.springframework.test.web.servlet.TestDispatcherServlet.service(TestDispatcherServlet.java:65) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:729) 
    at org.springframework.mock.web.MockFilterChain$ServletFilterProxy.doFilter(MockFilterChain.java:167) 
    at org.springframework.mock.web.MockFilterChain.doFilter(MockFilterChain.java:134) 
    at org.springframework.test.web.servlet.MockMvc.perform(MockMvc.java:155) 
    at backup.itests.ServiceTest.getConfigurationSuccess(ServiceTest.java:43) 
    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.springframework.test.context.junit4.statements.RunBeforeTestMethodCallbacks.evaluate(RunBeforeTestMethodCallbacks.java:75) 
    at org.springframework.test.context.junit4.statements.RunAfterTestMethodCallbacks.evaluate(RunAfterTestMethodCallbacks.java:86) 
    at org.springframework.test.context.junit4.statements.SpringRepeat.evaluate(SpringRepeat.java:84) 
    at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325) 
    at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:254) 
    at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:89) 
    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.springframework.test.context.junit4.statements.RunBeforeTestClassCallbacks.evaluate(RunBeforeTestClassCallbacks.java:61) 
    at org.springframework.test.context.junit4.statements.RunAfterTestClassCallbacks.evaluate(RunAfterTestClassCallbacks.java:70) 
    at org.junit.runners.ParentRunner.run(ParentRunner.java:363) 
    at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.run(SpringJUnit4ClassRunner.java:193) 
    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) 
Caused by: java.lang.NullPointerException 
    at backup.restservice.BaseRestController.getAgentConfigByIP(BaseRestController.java:25) 
    at backup.restservice.AgentRestController.getConfiguration(AgentRestController.java:34) 
    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.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:221) 
    at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:136) 
    at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:110) 
    at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:817) 
    at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:731) 
    at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85) 
    at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:959) 
    at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:893) 
    at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:968) 
    ... 39 more 

Может ли кто-нибудь помочь мне написать тестовые файлы JUnit или JBehave для данного двух контроллеров и развернуть тестовый пример для контроллеров в AgenRestController. Это было бы великой и конструктивной помощью.

+0

Я не вижу NPE; Я вижу соединение ConnectException: Connection отказано. Похоже, что любая конфигурация базы данных у вас отсутствует. – Gregg

+0

Когда он подключается к базе данных. Затем он дает NPE. –

+0

Это не ошибка, которую вы имеете в своем вопросе. – Gregg

ответ

0
private WebApplicationContext webApplicationContext; 

@Before 
public void setup() throws Exception { 
    this.mockMvc = webAppContextSetup(webApplicationContext).build(); 
} 

Просто выстрел в темноте здесь, но webApplicationContext имеет нулевое значение, а не инициализирован. Возможно, перед этим.mockMcx = ... вы можете вставить строку:

webApplicationContext = new WebApplicationContext();