作者热门文章
- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我正在尝试使用 spring-boot 运行 spring-test cases。我的测试类如下所示
@ContextConfiguration(initializers = TestContextInitializer.class)
@RunWith(SpringRunner.class)
@SpringBootTest(classes = {TestServiceApplication.class})
public class SampleTest {
@org.junit.Test
public void getContactsByName() throws Exception {
}
}
虽然我的配置类看起来像
public class TestContextInitializer implements ApplicationContextInitializer<ConfigurableApplicationContext> {
@Override
public void initialize(ConfigurableApplicationContext configurableApplicationContext) {
System.setProperty("DATA_DB_URL","some_url");
System.setProperty("DATA_DB_USER","some_user");
System.setProperty("DATA_DB_PASSWORD","some_password");
System.setProperty("DATA_DB_POOL_SIZE","2");
System.setProperty("DATA_DB_ROW_PREFETCH_SIZE","50");
}
}
一切正常,但我遇到了问题。作为我公司的政策,我不能在源代码中 checkin 密码。我怎样才能将密码外部化,这样我就不必 checkin 了。
最佳答案
只需使用环境变量。或者有 @PropertySource
注释用于使用不同的属性进行测试。
但另一方面,您真的不应该那样使用系统属性。系统属性是针对系统的,什么是操作系统、时间系统、语言等。它不应该与您的应用程序有任何关系。这也引入了全局共享状态。虽然如果您要开始并行运行测试,您可能不会这样做,但如果您在测试之间更改这些值,它们会偶尔中断。您可能会遇到其他问题,例如您需要 DATA_DB_USER
的属性对于 2 个不同的组件是不同的。
关于java - 如何在spring test中动态设置环境变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46304932/
我是一名优秀的程序员,十分优秀!