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),我们将立即处理