第七章 项⽬实战中的Springboot2.X单元测试应⽤

1集 公司⾥⾯软件开发测试流程你知道多少

 简介:讲解公司⾥⾯软件开发测试

需求分析 -> 设计 -> 开发 -> 测试 -> 上线
测试⾥⾯的种类
  • 单元测试

        完成最⼩的软件设计单元的验证⼯作,⽬标是确保模块被正确的编码

  • ⿊盒测试 
        不考虑内部结构,主要测试功能⼗分满⾜需求
  • ⽩盒测试
        针对代码级别,测试开发⼯程师⼀般具备⽩盒测试能⼒,针对程序内部的逻辑结构进⾏
        代码级别的测试
  • 回归测试
        对原先提出的缺陷进⾏⼆次验证,开发⼈员修复后进⾏⼆次的验证
  • 集成测试
        测试模块和模块之间的整合,且测试主要的业务功能
  • 系统测试
        针对整个产品系统进⾏的测试,验证系统是否满⾜产品业务需求

2集 在线教育项⽬⾥⾯怎么⽤SpringBoot2.x的单元测试

 简介:讲解项⽬⾥⾯怎么使⽤SpringBoot2.x的单元测试

  • 引⼊相关依赖
<!--springboot 程序测试依赖,如果是⾃动创建项⽬默认添加 -->
<dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
</dependency>
<dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.12</version>
        <scope>test</scope>
</dependency>
  • 配置相关注解 
@RunWith(SpringRunner.class) //底层⽤junit SpringJUnit4ClassRunner
@SpringBootTest(classes={XdclassApplication.class})//启动整个springboot⼯程
public class SpringBootTests { }
常⽤单元测试的注解
  • @before
  • @Test
  • @After 
断⾔
  • 判断程序结果是否符合预期 TestCase.assertXXX (例如:如果该方法是assertEquals两个参数相等,程序就通过)

本章代码块例子:

@RunWith(SpringRunner.class) //SpringRunner继承了SpringJUnit4ClassRunner
//扫描启动项目位置
@SpringBootTest(classes = {DemoProjectApplication.class})
public class SelectListVideoTest {
    //测试执行之前打印
    @Before
    public void befo(){
        System.out.println("测试执行之前");
    }
    
    @Test
    public void TestOne(){
        System.out.println("这是一个测试类");
        TestCase.assertEquals(1,1); //断言
    }
    @After
    public void after(){ //这个方法,当测试类抛异常After依然会执行
        System.out.println("测试执行之后");
    }
}

3集 案例实战单元测试调⽤Controller-Service层接⼝

简介:讲解Springboot单元测试Controller-Service层接⼝ 

  • 案例实战 Controller层登录⽅法测试

UserTest:

@RunWith(SpringRunner.class)
@SpringBootTest(classes = {DemoProjectApplication.class})
public class UserTest {
    UserControll userControll = new UserControll();
    @Test
    public void LoginTest(){ //
        //1.创建个User对象
        User user = new User("xiaoliu", "123456");
        JsonData jsonData = userControll.Loging(user);

        //使用断言,查看code是否和逾期一样
        TestCase.assertEquals(0,jsonData.getCode());
    }

}
  •  案例实战 视频列表Service层单元测试
@RunWith(SpringRunner.class) //SpringRunner继承了SpringJUnit4ClassRunner
//扫描启动项目位置
@SpringBootTest(classes = {DemoProjectApplication.class})
public class SelectListVideoTest {

    //测试执行之前打印
    @Before
    public void befo(){
        System.out.println("测试执行之前");
    }

    @Autowired
    private VideoService videoService;
    //查看所有视频
    @Test
    public void selectVideoList(){
        List<Video> videoList = (List<Video>)videoService.GetVideoList();
        TestCase.assertTrue(videoList.size()>0); //如果没有大于0 说明没有值断言报错
    }
    @Test
    public void TestOne(){
        System.out.println("这是一个测试类");
        TestCase.assertEquals(1,1); //断言
    }
    @After
    public void after(){ //这个方法,当测试类抛异常After依然会执行
        System.out.println("测试执行之后");
    }
}

4 MockMvc案例实战调⽤ControllerAPI接⼝

简介:讲解 Springboot MockMvc 调⽤ api 层接⼝
如何测试 Controller 对外提供的接⼝
  • 增加类注解 @AutoConfifigureMockMvc
  • 注⼊⼀个MockMvc
  •  相关API
  1.  perform执⾏⼀个RequestBuilder请求
  2.  andExpect:添加ResultMatcher->MockMvcResultMatchers验证规则
  3. andReturn:最后返回相应的MvcResult->Response
  • 案例:在线教育VideoController 视频列表接⼝ 单元测试

@Autowired
    private MockMvc mockMvc;
    @Test
    public void testVideoListApi() throws Exception{
        MvcResult mvcResult = mockMvc.perform(MockMvcRequestBuilders.get("/api/v1/pub/video/GetVideoList"))
                .andExpect(MockMvcResultMatchers.status().isOk()) //验证规则,是否为200
                .andReturn();
        MockHttpServletResponse response = mvcResult.getResponse();
        int status = response.getStatus();
        System.out.println("状态为:"+status);

        //设置编码
        response.setCharacterEncoding("UTF-8");
        response.setContentType("application/json");

        String contentAsString = response.getContentAsString(); //获取Api返回的值
        System.out.println("获取Api返回的值:"+contentAsString);

    }

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值