单元测试

坚强是说给别人听的谎言 提交于 2019-12-28 02:48:27

单元测试

  • 在写完功能之后,自然就是测试来验证自己接口是可运行的
    采用的是MockMvc的框架

添加依赖

<dependency>
            <groupId>com.jayway.jsonpath</groupId>
            <artifactId>json-path</artifactId>
            <version>0.8.1</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>com.jayway.jsonpath</groupId>
            <artifactId>json-path-assert</artifactId>
            <version>0.8.1</version>
            <scope>test</scope>
        </dependency>
  • 在做测试的时候要先分清楚自己这个接口是什么请求(get,post,put…)还有自己的请求参数

springcloud测试类

  • 首先,这是一个基于springcloud的接口,创建测试类,可以直接生成也可以自己写
  • 在类上贴两个注解
@SpringBootTest(classes = 启动类.class)
@RunWith(SpringJUnit4ClassRunner.class)

大家注意 @springBootTest和@WebMvcTest不能混用 混用会出问题的,如果要混用,请带上@AutoConfigureMockMvc
贴完注解之后

  • 注入自己的MockMvc的实例对象
private MockMvc mockMvc;
@Before
public void setUp() throws Exception {
    mockMvc = MockMvcBuilders.standaloneSetup(测试的类).build();
}

  • 注入完对象之后,就可以开始编写测试方法了,在方法上面贴@Test

    • 如果是新增,修改,删除这种会修改到数据库数据的,请大家先在方法上贴@Transactional(事务回滚)
    • 如果你的方法是post的方法
MvcResult mvcResult = mockMvc.perform(
//请求类型可以根据接口的不同而修改,里面的url则是可以访问到这个接口的路径
        MockMvcRequestBuilders.post(url.toString())
//请求类型,根据请求的不同来显示     
           .contentType(MediaType.APPLICATION_JSON_UTF8_VALUE)
//请求头,可不写
                .header("accessToken","")
//请求的自身带的参数(1.如果是用对象作为参数的,就自己先new一个测试对象扔到这个方法里
//面来即可),(2.如果无参数或者在路径中携带参数的,这个可不写),3.(如果有参数,但是参数是单
//个的,就把content改成param("参数名","参数值"),多个参数则用params())
                .content(JSONObject.toJSONString(参数对象)
                .accept(MediaType.APPLICATION_JSON_UTF8_VALUE))
//断言这个接口是运行的通的,如果断言失败,则这个接口运行之后会报错,可以吧里面改成自己
//定义的错误,或者自己的判断的依据
        .andExpect(status().isOk())
//最后返回相应的MvcResult;然后进行自定义验证/进行下一步的异步处理(对返回的数据进行的判断)
        .andReturn();
        
  • 直接运行即可测试

https://blog.csdn.net/Adam_allen/article/details/79919921 这个更详细

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!