博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
springboot单元测试通过MockMvc类调用controller接口
阅读量:7198 次
发布时间:2019-06-29

本文共 2244 字,大约阅读时间需要 7 分钟。

目前有个保存接口有问题,前端双击保存调用两次接口,而生成ID策略是时间戳,这样并发情况下导致重复,

于是想自己写一个单元测试类,调用controller接口。在网上找了好几个也不行,后来经过摸索,已实现,亲测有效。

之前好多都是这样的

 
private MockMvc mockMvc;    @Autowired    private WebApplicationContext webApplicationContext;    @Before    public void setUp() throws Exception{        //MockMvcBuilders.webAppContextSetup(WebApplicationContext context):指定WebApplicationContext,将会从该上下文获取相应的控制器并得到相应的MockMvc;        mockMvc = MockMvcBuilders.webAppContextSetup(webApplicationContext).build();//建议使用这种    }    @Test   。。。。。。

但是试了之后并没有效果,而且经测试 :

mockMvc = MockMvcBuilders.webAppContextSetup(webApplicationContext).build();//建议使用这种 这行代码完全不需要 下面是我的代码:
/** * @author chichenglong * @date 2019/6/14 10:29 */@RunWith(SpringRunner.class)@SpringBootTest@WebAppConfiguration@AutoConfigureMockMvcpublic class ProjectRecipeControllerTest {    @Autowired    private MockMvc mockMvc;//    @Autowired//    private WebApplicationContext webApplicationContext;////    @Before//    public void setUp() throws Exception{//        //MockMvcBuilders.webAppContextSetup(WebApplicationContext context):指定WebApplicationContext,将会从该上下文获取相应的控制器并得到相应的MockMvc;//        mockMvc = MockMvcBuilders.webAppContextSetup(webApplicationContext).build();//建议使用这种//    }    @Test    public void save() throws Exception{        ProjectRecipeVo vo = new ProjectRecipeVo();        ProjectRecipeDTO dto = new ProjectRecipeDTO();        dto.setPatientNumber("1234564564");        dto.setPatientId("YYHZ20190612LEEB");        vo.setProjectRecipeDTO(dto);        MvcResult mvcResult=mockMvc.perform(MockMvcRequestBuilders.post("/projectRecipe/save")                .content(FastJsonUtil.toJSONString(vo)))                .andReturn();        int status=mvcResult.getResponse().getStatus();        String content =mvcResult.getResponse().getContentAsString();//        Assert.assertEquals(200,status);//        Assert.assertEquals("success",content);        MvcResult mvcResultSecond=mockMvc.perform(MockMvcRequestBuilders.post("/projectRecipe/save")                .content(FastJsonUtil.toJSONString(vo)))                .andReturn();    }}

重点注意下,@RunWith(SpringRunner.class)这个注释一定要有,因为调用controller方法需要重启一个controller,要运行,就需要一个端口,这个可以随机开启一个端口供测试用。

转载于:https://www.cnblogs.com/deyujincheng/p/11022823.html

你可能感兴趣的文章
LeetCode 404: Sum of Left Leaves
查看>>
Alpha冲刺Day9
查看>>
ARC085F(动态规划,线段树)
查看>>
HDU3127:WHUgirls(二维完全背包)
查看>>
npm常用命令
查看>>
HTML 表格
查看>>
Kotlin入门(22)适配器的简单优化
查看>>
代码外的任务很精彩 ---Software project survival guide 读书报告
查看>>
Java io流学习总结(二)
查看>>
PHP中的PDO函数库详解
查看>>
C++编程常见错误
查看>>
Converter of C#&VB.NET
查看>>
修改ASPCMS升级扩展功能
查看>>
模拟HTTP请求的返回&shell写cgi
查看>>
《跟任何人都聊得来》读书笔记
查看>>
问题tips
查看>>
QEMU漏洞挖掘
查看>>
ios 下拉刷新 上拉更多
查看>>
数据结构之病毒感染检测问题
查看>>
PHP-Manual的学习----【序言】
查看>>