You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SpringBoot测试中如何激活application.properties使用的环境变量?

解决SpringBoot 3.2.4测试时环境变量未加载的问题

以下几种简便方法可帮你在测试时加载所需环境变量:

1. 用@DynamicPropertySource动态绑定环境变量

在测试类中添加该注解,直接读取系统环境变量并映射到配置项:

import org.springframework.test.context.DynamicPropertySource;
import org.springframework.test.context.DynamicPropertyRegistry;
import org.springframework.boot.test.context.SpringBootTest;

@SpringBootTest
public class YourApplicationTests {

    @DynamicPropertySource
    static void registerDbProperties(DynamicPropertyRegistry registry) {
        registry.add("spring.datasource.username", () -> System.getenv("DB_USER"));
        registry.add("spring.datasource.password", () -> System.getenv("DB_PSW"));
    }

    // 测试方法编写...
}

这种方式直接复用系统中已存在的环境变量,无需额外配置文件。

2. 创建测试专用配置文件

在src/test/resources下新建application-test.properties,可选择两种配置方式:

# 方式一:直接写入测试固定值
spring.datasource.username=test_db_user
spring.datasource.password=test_db_psw

# 方式二:继续引用环境变量(需确保测试环境已设置对应变量)
# spring.datasource.username=${DB_USER}
# spring.datasource.password=${DB_PSW}

然后在测试类上激活这个配置文件:

@SpringBootTest
@ActiveProfiles("test")
public class YourApplicationTests {
    // 测试方法编写...
}

若选方式二,需在测试运行环境(如IDEA运行配置、CI/CD流程)中提前设置DB_USER和DB_PSW。

3. 直接在@SpringBootTest中临时指定配置

如果仅单个测试类需要临时配置,可直接在注解内声明:

@SpringBootTest(properties = {
        "spring.datasource.username=temp_test_user",
        "spring.datasource.password=temp_test_psw"
})
public class YourApplicationTests {
    // 测试方法编写...
}

适合快速调试单个测试场景。

4. 全局配置测试环境变量

  • IDEA开发环境:打开「Run/Debug Configurations」,找到对应测试类配置,在「Environment variables」栏添加DB_USER=xxx;DB_PSW=xxx,保存后运行测试即可。
  • 命令行测试:在Maven/Gradle命令前注入环境变量:
# Maven
DB_USER=test_user DB_PSW=test_psw mvn test

# Gradle
DB_USER=test_user DB_PSW=test_psw ./gradlew test

内容的提问来源于stack exchange,提问作者naruto25

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.26 03:43:13