单元测试
- 前言
- 1、写测试要用的类
- 2、写测试要用的类
- 3、运行测试类
- 4、spring-boot-starter-test默认提供了以下库
-
- [4.1 junit5](#4.1 junit5)
-
- [4.1.1 @DisplayName:为测试类或者测试方法设置展示名称](#4.1.1 @DisplayName:为测试类或者测试方法设置展示名称)
- [4.1.2 @BeforeAll:所有测试方法运行之前先运行这个](#4.1.2 @BeforeAll:所有测试方法运行之前先运行这个)
- [4.1.3 @BeforeEach:每个测试方法运行之前运行](#4.1.3 @BeforeEach:每个测试方法运行之前运行)
- [4.2 断言](#4.2 断言)
-
- [4.2.1 Assertions.assertEquals](#4.2.1 Assertions.assertEquals)
- 4.2.2嵌套测试
- [4.2.3参数话测试 @ParameterizedTest](#4.2.3参数话测试 @ParameterizedTest)
前言
Spring boot 提供一系列测试工具集及注释方便我们进行测试
spring-boot-test提供核心测试能力,spring-boot-test-autoconfigure 提供测试的一些自动化配置
我们只需导入spring-boot-starter-test即可整合测试
1、写测试要用的类
javascript
package com.example.boot306demo.service;
import org.springframework.stereotype.Service;
/**
* @author jitwxs
* @date 2023年11月15日 20:27
*/
@Service
public class HelloService {
public int sum(int a,int b){
return a+b;
}
}
2、写测试要用的类
自动注入任意组件即可测试
javascript
package com.example.boot306demo;
import com.example.boot306demo.service.HelloService;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
@SpringBootTest //具备测试springboot应用容器中所有组件的功能
class Boot306DemoApplicationTests {
@Autowired //自动注入任意组件即可测试
HelloService helloService;
@Test
void contextLoads() {
int sum = helloService.sum(1,2);
System.out.println(sum);
}
}
3、运行测试类
4、spring-boot-starter-test默认提供了以下库
junit5/spring Test/Assertj/Hamcrest/Mockito/JSONassert/jsonPath
4.1 junit5
官方英文文档为:https://junit.org/junit5/docs/current/user-guide/#writing-tests-annotations
中文文档:https://gitee.com/liushide/junit5_cn_doc/blob/master/junit5UserGuide_zh_cn.md
4.1.1 @DisplayName:为测试类或者测试方法设置展示名称
4.1.2 @BeforeAll:所有测试方法运行之前先运行这个
4.1.3 @BeforeEach:每个测试方法运行之前运行
4.2 断言
Assertions
4.2.1 Assertions.assertEquals
4.2.2嵌套测试
junit5 可以通过java中的内部类和@Nested注解实现嵌套测试,从而可以更好的把相关的测试方法组织在一起,在内部类中可以使用@BeforeEach和@AfterEach注解,而且嵌套的层次没有限制
4.2.3参数话测试 @ParameterizedTest
javascript
@ParameterizedTest //参数话测试
@ValueSource(strings = {"one","two","three"})
@DisplayName("参数话测试")
public void parameterizedTest(String string){
System.out.println(string);
Assertions.assertTrue(StringUtils.isNotBlank(string));
}