美文网首页
SpringBootTest

SpringBootTest

作者: dd_123 | 来源:发表于2023-06-07 02:24 被阅读0次

Spring Boo Test单元测试

一、依赖
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>

spring-boot-starter-test默认添加了以下依赖:

1.juint5.0(juint最新版本)

2.mockito,java mock框架,用于模拟任何spring管理的bean,如模拟servie接口返回都数据,模拟feign接口远程调用都结果,而不会真正地去调用。

3.assertj,断言框架,JUnit5中的断言内容位于org.junit.jupiter.api.Assertions类,Assertions.xxx各类断言,同时支持lambda表达式

4.JosnAssert、JosnPath等工具,用于json的断言判断,json值获取等。

二、Spring Boot Test常用注解
注解 作用
@SpringbootTest 指定测试类,默认提供Spring上下文环境。以往会在测试类加上@RunWith(SpringRunner.class),该注解是junit4 使用, 目的是将 Spring Boot和 Junit 的特性集成起来,juint5.0使用的是@ExtendWith({SpringExtension.class})来集成,而@SpringbootTest注解包含了@ExtendWith
@ExtendWith 注册扩展;如果只想简单的启用spring环境进行简单测试,不想启用springboot环境,可以扩展为@ExtendWith(SpringExtension.class),启动速度会快一些。
@Test 指定方法为测试方法
@MockBean 与@Mock注解作用类似(mockito框架自带),SpringBootTest框架在mockito框架基础上封装了@MockBean,将Mock的对象添加到Spring上下文中。
@DisplayName 用于指定测试类和测试方法都别名,@DisplayName("xxx"),可用于生成报告输出想要的别名
@BeforeAll juint4.0是用@BeforeClass,在测试类所有测试方法执行前执行一次,用于全局初始化
@AfterAll juint4.0是用@AfterClass,在测试类所有测试方法执行后执行一次,用于销毁资源
@BeforeEach juint4.0是用@Before,在测试类都每个测试方法执行前执行一次
@AfterEach juint4.0是用@After,在测试类都每个测试方法执行后执行一次
@TestMethodOrder 测试方法执行顺序策略,搭配@Order注解使用,@TestMethodOrder(MethodOrder.OrderAnnotation.class)
@Order 测试方法执行顺序,数字越低,执行顺序越高
@Disabled juint4.0用都是@Ingore,用于禁用测试方法
@RepeatedTest 指定测试方法重复执行次数
@AutoConfigureMockMvc 启用mockMvc自动配置,可用于接口测试
三、实践

(1)基本上使用@SpringBootTest注解、@Resource / @Autowired注解、@MockBean即可

1.1使用@SpringBootTest在类上面加载Spring上下文环境.

1.2使用@Resource / @Autowired注解在类都属性上面,用于注入要测试的service类业务代码,不mock该实现层依赖都bean都话,默认会加载整个Spring上下文,会执行该bean调用的业务代码。

1.3@MockBean,于@Mock作用类似,@MockBean将Mock的对象添加到Spring上下文中,用于mock一些接口方法返回的内容,@MockBean注解mock的bean,如果没mock方法返回值(when xx then return xx),默认是返回null,mock了某个类到spring上下文,就不会执行该类的实际业务逻辑 。

四、学习链接:

相关文章

网友评论

      本文标题:SpringBootTest

      本文链接:https://www.haomeiwen.com/subject/lcpnqdtx.html