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

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了

    这里真的是自己的问题

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

报告相同问题?

悬赏问题

  • ¥50 MATLAB APP 制作出现问题
  • ¥15 wannier复现图像时berry曲率极值点与高对称点严重偏移
  • ¥15 利用决策森林为什么会出现这样·的问题(关键词-情感分析)
  • ¥15 DispatcherServlet.noHandlerFound No mapping found for HTTP request with URI[/untitled30_war_e
  • ¥15 使用deepspeed训练,发现想要训练的参数没有梯度
  • ¥15 寻找一块做为智能割草机的驱动板(标签-stm32|关键词-m3)
  • ¥15 信息管理系统的查找和排序
  • ¥15 基于STM32,电机驱动模块为L298N,四路运放电磁传感器,三轮智能小车电磁组电磁循迹(两个电机,一个万向轮),怎么用读取的电磁传感器信号表示小车所在的位置
  • ¥15 如何解决y_true和y_predict数据类型不匹配的问题(相关搜索:机器学习)
  • ¥15 PB中矩阵文本型数据的总计问题。