Springboot项目的测试类书写(速通)

目录

  • 前言
  • [1. 单元测试的测试类](#1. 单元测试的测试类)
  • [2. 框架测试的测试类](#2. 框架测试的测试类)

前言

在实际开发中,如果只是做一个简单的单元测试(不涉及端到端、数据库交互、API调用、消息队列处理等),我为了方便一般都是找块儿地方写一个main方法来跑一下就行了,当然不推荐这样做,怕被领导发现 。所以还是建议在 /src/test/xxx/ 目录下写一个测试类来做测试。

1. 单元测试的测试类

如果只是为了做一个单元测试,比如说测试一个方法是否能正常跑,那么可以按照以下流程创建一个:

  1. maven依赖

    xml 复制代码
            <dependency>
                <groupId>junit</groupId>
                <artifactId>junit</artifactId>
                <version>4.12</version>
                <scope>test</scope>
            </dependency>
  2. 测试类

    java 复制代码
    import org.junit.Test;
    
    public class MyTest {
        @Test
        public void test() {
            long l = System.currentTimeMillis();
            System.out.println(l);
        }
    }

要求:

  1. 测试类中的方法需要加上@Test
  2. 访问修饰符必须是public,返回类型必须是void
  3. 不接受任何参数(JUnit5可以用@ParameterizedTest来实现参数化测试,但是很麻烦);
  4. 可用expected来标注需要捕获的异常@Test(expected = ExceptionType.class)

2. 框架测试的测试类

如果需要启动所有上下文进行测试,那么在测试类上面加一个@SpringBootTest就行了,接着就可以使用Bean做测试了,如下:

java 复制代码
@SpringBootTest
public class ConfEncTest {
    @Autowired
    private StringEncryptor jasyptStringEncryptor;
	
	@Test
	public void encryptTest() {
		String originPassord = "123456";
        String encryptStr = jasyptStringEncryptor.encrypt( originPassord );
        System.out.println(encryptStr);
    }
 }

@SpringBootTest:启动一个全功能的Spring Boot应用上下文来进行集成测试,可以使用所有的Bean。启动一个测试方法就相当于启动整个项目,比较慢。

如果只是使用几个Bean,那么可以使用 @RunWith(SpringRunner.class) + @ContextConfiguration

java 复制代码
@RunWith(SpringRunner.class)
@ContextConfiguration(classes = {StringEncryptor.class})
public class ConfEncTest {
    @Autowired
    private StringEncryptor jasyptStringEncryptor;
	
	@Test
	public void encryptTest() {
		String originPassord = "123456";
        String encryptStr = jasyptStringEncryptor.encrypt( originPassord );
        System.out.println(encryptStr);
    }
 }

@RunWith:用于指定运行测试类的测试运行器(Test Runner),需要搭配@ContextConfiguration使用。

SpringRunner: Spring提供的一个特殊的测试运行器,它负责解析@SpringBootTest、@ContextConfiguration等Spring相关的注解,并在测试执行前创建和配置Spring应用上下文。

@ContextConfiguration:指定包含所需Bean定义的配置类或XML配置文件。这样,SpringRunner在运行测试时,会根据@ContextConfiguration提供的信息来创建一个包含必要Bean的ApplicationContext,从而实现对这些依赖的注入。如果需要同时指定多个类可以这样写:@ContextConfiguration(classes = {ConfigA.class, ConfigB.class, ConfigC.class})。

@SpringBootTest是一个复合注解,其中包含了@RunWith。

相关推荐
阿丰资源1 小时前
基于Spring Boot的电影城管理系统(直接运行)
java·spring boot·后端
IT_陈寒1 小时前
SpringBoot自动配置的坑差点让我加班到天亮
前端·人工智能·后端
消失的旧时光-19432 小时前
Spring Boot 工程化进阶:统一返回 + 全局异常 + AOP 通用工具包
java·spring boot·后端·aop·自定义注解
追风筝的人er3 小时前
SpringBoot+Vue3 企业考勤如何处理法定假期?节假日方案、调休补班与工作日判断链路拆解
前端·vue.js·后端
StockTV3 小时前
印度股票实时数据 NSE和BSE的实时行情、K 线及指数数据
java·开发语言·spring boot·python
金銀銅鐵4 小时前
[git] 如何丢弃对一个文件的改动?
git·后端
橘子海全栈攻城狮4 小时前
【最新源码】养老院系统管理A013
java·spring boot·后端·web安全·微信小程序
敖正炀4 小时前
反模式与排查宝典:Spring Boot 自动配置与核心机制的常见陷阱
spring boot
smallyoung4 小时前
具有反思能力的 Agentic RAG 实战:用 LangChain4j 实现 CRAG 纠错检索
人工智能·后端