java - Spring RestController + Junit 测试

标签 java spring junit spring-test

我正在玩 springframework 的 spring-test。我的目的是在我的休息 Controller 中测试以下 POST 方法:

@RestController
@RequestMapping("/project")
public class ProjectController {

  @RequestMapping(method = RequestMethod.POST, consumes = MediaType.APPLICATION_JSON_VALUE)
  public Project createProject(@RequestBody Project project, HttpServletResponse response) {
    // TODO: create the object, store it in db...
    response.setStatus(HttpServletResponse.SC_CREATED);
    // return the created object - simulate by returning the request.
    return project;
  }
}

这是我的测试用例:

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = {ProjectController.class })
@WebAppConfiguration
public class ProjectControllerTest {

    private MockMvc mockMvc;

    @Autowired
    private WebApplicationContext wac;

    @Before
    public void setUp() {
        mockMvc = MockMvcBuilders.webAppContextSetup(this.wac).build();
    }

    @Test
    public void testCreationOfANewProjectSucceeds() throws Exception {
        Project project = new Project();
        project.setName("MyName");
        String json = new Gson().toJson(project);

        mockMvc.perform(
                post("/project")
                        .accept(MediaType.APPLICATION_JSON)
                        .contentType(MediaType.APPLICATION_JSON)
                        .content(json))
                .andExpect(status().isCreated());
    }

}

当我执行它时,我得到状态代码 415 而不是 201。我错过了什么?一个简单的 GET 请求就可以了。

最佳答案

您需要为 @RestController 添加注释 @EnableWebMvc 才能工作,您的代码中缺少此注释,添加此注释将解决问题

关于java - Spring RestController + Junit 测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37458037/

相关文章:

java - 如何使用 .htaccess 来加速 Spring 网站为不同类型的文件自定义浏览器缓存

集群中的 spring 集成 + cron + quartz ?

maven - 如何配置 Maven 将 JUnit 断言失败消息打印到控制台

java - 如何在 GitHub Action 上运行 Spring boot 应用程序的单元测试

java - AspectJ 不捕获来自 jar 文件的调用

java - 将 gurobi 与 java 结合使用 vs gurobi 与 ampl

java - i18n 找不到资源包

java - 将动态 JSON 值解析为 Java 对象

java - 如何编写动态测试用例

java - 在防火墙后面添加 Sherlock os Maven 依赖项,并且不引用项目