mrtian367 2019-04-28 16:39 采纳率: 0%
浏览 3904
已采纳

spring boot 使用MockMvc进行单元测试,响应返回一直404

下面是相关代码:
controller层

@RestController
@RequestMapping("/studentTest/")
public class StudentControllerTest {

@Autowired
private StudentDao studentDao;

@RequestMapping(value = "insertStudent.html",method = RequestMethod.POST,produces = {MediaType.APPLICATION_JSON_UTF8_VALUE})
public String insertStudent(@RequestParam("name") String name, @RequestParam("age") String age, @RequestParam("sex") String sex){
    Student stu = new Student();
    System.out.println(UUID.randomUUID().toString());
    stu.setId(UUID.randomUUID().toString());
    stu.setName(name);
    stu.setAge(age);
    stu.setSex(sex);
    studentDao.insertStudent(stu);

    return "success";

}

}

测试类:
@RunWith(SpringRunner.class)
@SpringBootTest
@ComponentScan(basePackages = "com.tjf.learn")
public class Demo1ApplicationTests {

private MockMvc mockMvc;

@Before
public void initMockMvc (){
    this.mockMvc = MockMvcBuilders.standaloneSetup(new IndexController()).build();
}

@Test
public void insertStudent  () throws Exception{
    RequestBuilder rb = MockMvcRequestBuilders.post("/studentTest/insertStudent.html")
            .param("name","张三")
            .param("age","20")
            .param("sex","1")
            .contentType(MediaType.APPLICATION_JSON_UTF8).accept(MediaType.APPLICATION_JSON_UTF8);
    mockMvc.perform(rb)
           // .andExpect(MockMvcResultMatchers.content().contentType(MediaType.APPLICATION_JSON_UTF8_VALUE))
            .andExpect(MockMvcResultMatchers.status().isOk())
            .andReturn().getResponse().getContentAsString();
}
}


求哪位大神解决一下
  • 写回答

1条回答 默认 最新

  • mrtian367 2019-05-14 15:54
    关注

    终于知道什么原因了。
    今天无意之间看见了@AutoConfigureMockMvc这个注解,这个注解是用于自动配置MockMvc,我就放在测试类的上面添加了这个注解,无意之间也注意到了这段代码
    private MockMvc mockMvc;

    @Before
    public void initMockMvc (){
    this.mockMvc = MockMvcBuilders.standaloneSetup(new IndexController()).build();
    }
    这是注入了一个独立的IndexContoller对应的路由的MockMvc,所以这个路由下的测试能够通过,其他路由就会一直报404的状态码。错误的原因就在这里

    添加了注解@AutoConfigureMockMvc配合上@Autowired就可以自动的注册所有添加@Controller或者@RestController的路由的MockMvc了

    这里真的是自己的问题

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!
  • ¥15 drone 推送镜像时候 purge: true 推送完毕后没有删除对应的镜像,手动拷贝到服务器执行结果正确在样才能让指令自动执行成功删除对应镜像,如何解决?
  • ¥15 求daily translation(DT)偏差订正方法的代码
  • ¥15 js调用html页面需要隐藏某个按钮
  • ¥15 ads仿真结果在圆图上是怎么读数的
  • ¥20 Cotex M3的调试和程序执行方式是什么样的?
  • ¥20 java项目连接sqlserver时报ssl相关错误
  • ¥15 一道python难题3