目前在写单元测试的时候,在测试类中依赖到了需要spring管理的bean,但是没有使用spring的测试支持,导致无法自动注入这些依赖,下面通过这个机会了解一下@SpringBootTest这个注解的原理。
规范的测试程序:
@SpringBootTest
public class ApiTest {
private final XXXMapper mapper;
@Autowired
public ApiTest(XXXMapper mapper) {
this.mappermapper = mapper;
}
@Test
public void deleteDupliteTranslationsTest( ) {
mapper.xxx();
}
}
仅使用junit,运行测试程序的时候会报错:
org.junit.jupiter.api.extension.ParameterResolutionException: No ParameterResolver registered for parameter
需要引入的依赖:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>testtest</scope>
</dependency>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-api</artifactId>
<version>5.8.2</version>
<scope>test</scope>
</dependency>
一. 单元测试
以下是关于Java中单元测试的详细介绍:
单元测试的概念
单元测试是软件开发中的一种测试方法,旨在对软件中的**最小可测试单元(如方法、类等)进行验证。在Java中,通常是针对一个类的方法进行测试**,检查方法的输入与输出是否符合预期,以确保代码的正确性和可靠性。
单元测试的重要性
- 保证代码质量:通过对每个单元进行独立测试,能在开发早期发现代码中的缺陷和错误,避免问题在后续集成和系统测试阶段扩大,降低修复成本。
- 提高代码可维护性:编写良好的单元测试可以使代码结构更加清晰,模块之间的耦合度更低。当需要对代码进行修改或扩展时,单元测试可以帮助开发者快速验证修改是否对其他部分产生影响。
- 支持重构:有了完善的单元测试,开发者在对代码进行重构时可以更加放心,因为可以通过运行单元测试来确保重构后的代码功能仍然正确。
- 促进代码设计:在编写单元测试的过程中,开发者需要考虑代码的可测试性,这会促使他们设计出更加易于测试、解耦和模块化的代码。
常用的单元测试框架
- JUnit:是Java中最流行的单元测试框架之一。它提供了一组注解和断言方法,用于编写和运行单元测试。例如,
@Test
注解用于标记测试方法,assertEquals
方法用于验证方法的返回值是否与预期值相等。以下是一个简单的JUnit测试示例:
import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.*;
public class CalculatorTest {
<