java中的单元测试的使用以及原理

目前在写单元测试的时候,在测试类中依赖到了需要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 {
   
    
    

    <