我有一个使用spring-boot和嵌入式Tomcat容器的应用程序.
据我所知,我的代码与spring-boot 示例项目相同.但是,当我运行我的测试时,我得到的是404而不是200(在我尝试发布的情况下,而不是让我收到405,这与Tomcat设置错误一致):
Failed tests:
UserControllerTest.testMethod:45 Status expected:<200> but was:<404>
Run Code Online (Sandbox Code Playgroud)
我的基于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");
}
};
}
}
Run Code Online (Sandbox Code Playgroud)
UserController.java:
@RestController
@RequestMapping("/")
public class UserController {
@Autowired
UserService userService;
@RequestMapping(method = RequestMethod.GET) …Run Code Online (Sandbox Code Playgroud) 我在使用MockMvc,Mockito和Jackson测试Spring控制器时遇到了这个问题,所以我做了一个简单的类来测试杰克逊的表现.我使用的是jackson-databind:2.3.1和mockito-core:1.9.5.
鉴于此类:
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import java.io.Serializable;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
public class Person implements Serializable {
private String name;
private int age;
// Public getters and setters...
public static void main(String[] args) {
String name = "Bob";
int age = 21;
ObjectMapper objectMapper = new ObjectMapper();
// attempt serialization with real object
Person person = new Person();
person.setName(name);
person.setAge(age);
try {
System.out.println(objectMapper.writeValueAsString(person));
} catch (JsonProcessingException e) {
e.printStackTrace();
System.err.println("Failed to serialize real object");
}
// attempt …Run Code Online (Sandbox Code Playgroud)