У меня есть приложение, использующее spring -boot и встроенный контейнер Tomcat.
Насколько я могу судить, мой код такой же, как в примере spring -boot . Тем не менее, когда я запускаю свой тест, я получаю 404 вместо 200 (в случае, когда я пытаюсь опубликовать вместо того, чтобы получить, я получаю 405, что согласуется с неправильной настройкой Tomcat):
Failed tests:
UserControllerTest.testMethod:45 Status expected:<200> but was:<404>
Моя конфигурация на основе Java (некоторые классы конфигурации опущены):
@Configuration
@ComponentScan
@EnableAutoConfiguration
@Import({ ServiceConfig.class, DefaultRepositoryConfig.class })
public class ApplicationConfig {
private static Log logger = LogFactory.getLog(ApplicationConfig.class);
public static void main(String[] args) {
SpringApplication.run(ApplicationConfig.class);
}
@Bean
protected ServletContextListener listener() {
return new ServletContextListener() {
@Override
public void contextInitialized(ServletContextEvent sce) {
logger.info("ServletContext initialized");
}
@Override
public void contextDestroyed(ServletContextEvent sce) {
logger.info("ServletContext destroyed");
}
};
}
}
UserController.java:
@RestController
@RequestMapping("/")
public class UserController {
@Autowired
UserService userService;
@RequestMapping(method = RequestMethod.GET)
public ResponseEntity<String> testMethod() {
return new ResponseEntity<>("Success!", HttpStatus.OK);
}
}
UserControllerTest.java:
RunWith(SpringJUnit4ClassRunner.class)
@WebAppConfiguration
@ContextConfiguration(classes = {ApplicationConfig.class})
public class UserControllerTest {
@Autowired
private WebApplicationContext webApplicationContext;
private MockMvc mockMvc;
@Before
public void setUp() throws Exception {
this.mockMvc = MockMvcBuilders.webAppContextSetup(this.webApplicationContext).build();
}
@Test
public void testMethod() throws Exception {
this.mockMvc.perform(get("/")).andExpect(status().isOk());
}
}
Есть ли что-то основное, что мне не хватает? Я не предоставляю свою собственную конфигурацию Mvc, и я не коснулся Spring MVC DispatcherServlet, поэтому я предполагаю, что spring -boot автоматически настроит Tomcat.