Java常用的单元测试框架介绍(下)

发表于:2023-12-28 09:40

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:移动Labs    来源:移动Labs

  2.2.3 自动配置类型的注解(@AutoConfigure*)
  这些注解可以搭配@\*Test使用,用于开启在@\*Test中未自动配置的功能。例如@SpringBootTest和@AutoConfigureMockMvc组合后,就可以注入org.springframework.test.web.servlet.MockMvc。
  2.2.3.1 自动配置类型有两种使用方式
  a.在功能测试(即使用@SpringBootTest)时显示添加。
  b.一般在切片测试中被隐式使用,例如@WebMvcTest注解时,隐式添加了@AutoConfigureCache
  @AutoConfigureWebMvc
  @AutoConfigureMockMvc。
  2.2.4 启动测试类型的注解
  所有的@*Test注解都被@BootstrapWith注解,它们可以启动。
  ApplicationContext,是测试的入口,所有的测试类必须声明一个@*Test注解。
  除了@SpringBootTest之外的注解都是用来进行切面测试的,他们会默认导入一些自动配置。一般情况下,推荐使用@SpringBootTest而非其它切片测试的注解,简单有效。若某次改动仅涉及特定切片,可以考虑使用切片测试。
  2.2.5 常用配置介绍
  @SpringBootTest,其中包含的配置项如下:
  @WebEnvironment,其中包含的配置项如下:
  Part 03、  Mockito框架 
  3.1 常用的Mockito方法
  3.2 Mockito参数适配方法
  Mockito.anyString()
  Mockito.anyInt()
  Mockito.anyLong()
  Mockito.anyDouble()
  Mockito.anyObject()   表示任何对象
  Mockito.any(clazz)     表示任何属于clazz的对象
  Mockito.anyCollection()
  Mockito.anyCollectionOf(clazz)
  Mockito.anyList(Map, set)
  Mockito.anyListOf(clazz)
  注:Mockito.anyString() 不能匹配到 null 参数,如果还需要匹配 null,可以使用 Mockito.any()。
  Part 04、单元测试样例 
  4.1 Mock redis、kafka方法
  方法1:
  @SpringBootTest通过@Resource引入对象测试,需要依赖redis环境(会启动spring boot 容器)
  方法2:
  //声明变量
  private  AsyncService asyncService;
  //需要mock的对象
  private StringRedisTemplate stringRedisTemplate;
  //创建要测试对象
  asyncService = new AsyncServiceImpl();
  //mock对象(也可以使用@Mock注解方式)
  StringRedisTemplate stringRedisTemplate =
  mock(StringRedisTemplate.class,Mockito.RETURNS_DEEP_STUBS);
  KafkaProducer kafkaProducer = mock(KafkaProducer.class);
  //属性赋值
  ReflectionTestUtils.setField(asyncService,
  "stringRedisTemplate", stringRedisTemplate);
  ReflectionTestUtils.setField(asyncService,
  "kafkaProducer", kafkaProducer);
  @Test
  @DisplayName("mock redis、kafka 测试")
  public void redisTest() {
  when(stringRedisTemplate.opsForValue().get(anyString())).thenReturn("2222");
     Assertions.assertTrue(asyncService.testRedis("真实方法调用"));
  }
  4.2 Spring Security模拟登录方法
  <dependency> 
   <groupId>org.springframework.security</groupId>
      <artifactId>spring-security-test</artifactId> 
      <version>5.6.5</version> 
      <scope>test</scope> 
  </dependency>
  注解:@WithMockUser(roles = "ROOT", username = "root") 
  4.3 远程接口调用方法(Controller入口测试)
  MockMVC的基本步骤:
  (1) mockMvc.perform执行一个请求。
  (2) MockMvcRequestBuilders.get("XXX")构造一个请求。
  (3) ResultActions.param添加请求传值
  (4) ResultActions.accept()设置返回类型
  (5) ResultActions.andExpect添加执行完成后的断言。
  (6) ResultActions.andDo添加一个结果处理器,表示要对结果做点什么事情,比如处使用print()输出整个响应结果信息。
  (7) ResultActions.andReturn表示执行完成后返回相应的结果。
 本文内容不用于商业目的,如涉及知识产权问题,请权利人联系51Testing小编(021-64471599-8017),我们将立即处理
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号