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

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 求差集那个函数有问题,有无佬可以解决
  • ¥15 【提问】基于Invest的水源涵养
  • ¥20 微信网友居然可以通过vx号找到我绑的手机号
  • ¥15 寻一个支付宝扫码远程授权登录的软件助手app
  • ¥15 解riccati方程组
  • ¥15 display:none;样式在嵌套结构中的已设置了display样式的元素上不起作用?
  • ¥15 使用rabbitMQ 消息队列作为url源进行多线程爬取时,总有几个url没有处理的问题。
  • ¥15 Ubuntu在安装序列比对软件STAR时出现报错如何解决
  • ¥50 树莓派安卓APK系统签名
  • ¥65 汇编语言除法溢出问题