3

回顾

  1. Spring Boot - 初识 Hello World
  2. Spring Boot - Servlet、过滤器、监听器、拦截器
  3. Spring Boot - 静态资源处理、启动加载、日志处理
  4. Spring Boot - 部署Deploy
  5. Spring Boot - 整合jsp后必须通过spring-boot:run方式启动?
  6. Spring Boot - 为什么整合jsp后必须通过spring-boot:run方式启动?
  7. Spring Boot - 自定义启动banner
  8. Spring Boot - 表单校验(JSR303&Hibernate Validator)

为什么要做单元测试?现状

  1. 不知道怎么编写单元测试
  2. 项目没有要求,所以不编写
  3. 单元测试价值不高,完全是浪费时间
  4. 业务逻辑比较简单,不值得编写单元测试
  5. 不管怎样,集成测试将会抓住所有的 bug,用不着进行单元测试
  6. 在项目的前期还是尽量去编写单元测试,但是越到项目的后期就越失控
  7. 为了完成编码任务,没有足够的时间编写单元测试

工具(一):Junit4

  • 注解的使用

    • @Test
    • @Before @After
    • @BeforeClass @AfterClass

工具(二):spring-boot-starter-test

  • 注解的使用

    • @RunWith(SpringRunner.class)
    • @SpringBootTest
  • 断言:对结果进行验证

    • Assert
  • 模拟HTTP环境

    • 注解:@AutoConfigureMockMvc
    • 工具类:MockMvc(3步)
    • perform:执行一个RequestBuilder请求,会自动执行SpringMVC的流程并映射到相应的控制器执行处理;

      • MockMvcRequestBuilders提供了get/post/put/delete/upload等http请求的方式
      • 提供了header/contentType/cookie/characterEncoding/params等设置request参数的方式
    • ResultActions

      • andExpect:添加ResultMatcher验证规则,验证控制器执行完成后结果是否正确;
      • andDo:添加ResultHandler结果处理器,比如调试时打印结果到控制台;
      • andReturn:最后返回相应的MvcResult;然后进行自定义验证/进行下一步的异步处理;
    • MvcResult(自定义Assert)

      • getModelAndView:获得控制层设置的ModeAndView对象
      • getResponse:获得最终响应结果

工具(三):Mockito

  • 打桩:实际上就是对接口、类、方法、参数、返回值进行伪造或者模拟。

    • ReflectionTestUtils
  • 注解的使用

    • @Mock:真实对象的替代品
    • @Spy:被测试对象需要一部分被执行、一部分被mock,需要用spy对目标对象进行包装
  • thenReturn与doReturn差异

    • 语法:

      • when-thenReturn

        • when(obj.method()).thenReturn(returnValue)
      • doReturn-when

        • doReturn(returnValue).when(obj).method()
    • 差异
    API Mock Obj Spy Obj
    when-thenReturn ×
    doReturn-when × ×

总结

本文详细的讲解了Junit,Mockito,以及spring boot的测试工具,相信各位看官老爷一定还想了解更多详细内容和使用技巧。

??当面讲给你听?? 讲堂地址,或许是最实用的教程,新课促销中,只要你敢来,保你收货满满?。

优惠报名

【全程撸码】Spring Boot 1.5 快速入门教程(全)(原价:28,优惠价:22)

【全程撸码】Spring Boot 进阶(全)(原价:46,优惠价:39)

图片描述


刘忠旭
441 声望500 粉丝

致力于最实用的技术