spring-boot - 使用 org.springframework.boot.test.context.SpringBootTest 时有没有办法推送环境变量?
问题描述
我有这个测试课:
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;
@SpringBootTest
class ThisTestClass {
@Test
void contextLoads() {}
}
当 contextLoads() 时,触发如下一段代码
private String envVar = System.getenv("ENV_VAR");
这将返回 null,这会影响我的测试,因此我需要一种在执行此测试之前的某个时间点推送环境变量的方法。通过 IDE 环境设置或控制台执行此操作不是一个选项,因为这也将由 jenkins 执行。
我试过了:
import org.springframework.test.context.TestPropertySource;
@TestPropertySource(properties = {"ENV_VAR = some_var"})
和
static {
System.setProperty("ENV_VAR", "some_var");
}
没有任何运气,有什么想法吗?
解决方案
两者都应该工作...
- 通过静态初始化设置环境变量
- 通过属性设置环境变量
@SpringBootTest(properties = { "bar = foo" , "foobar = foobar"} )
class SoTestEnvironmentVariablesApplicationTests {
static {
System.setProperty("foo","bar");
}
@Autowired Environment environment;
@Test
void loadEnvironmentVariables() {
assertNotNull(environment);
assertEquals("bar" , environment.getProperty("foo"));
assertEquals("foo" , environment.getProperty("bar"));
assertEquals("foobar" , environment.getProperty("foobar"));
}
}
推荐阅读
- node.js - 没有登录graylog服务器,也没有收到任何错误
- c# - 移动图像的原点以将其带回c#中的中心
- asp.net-mvc-5 - 检测 MVC 模型绑定中的违规文本
- java - 如何计算自定义 Epoch 时间?不是 UNIX 时代
- square-connect - 方现金招标流程
- spring - Spring Integration Sftp Streaming Inbound Channel Adapter 多次处理同一个文件
- html - 菜单不会出现在视差图像之上
- angular - 尝试在 Angular 6 中使用对象 Object 作为数组
- mongodb - golang 中的聚合查询
- java - Spring RefreshableKeycloakSecurityContext 内存泄漏