java - AbstractTransactionalJUnit4SpringContextTests 中的 Spring 配置文件

标签 java spring spring-profiles

我们有一组集成测试,用于验证各种事情,包括我们的数据库在每个环境(开发、测试、Qa 等)与我们的 JPA 映射和其他数据相关项目相关的情况下处于正常状态。

我们通过 Spring Profile 配置要连接到的数据库和其他特定于环境的东西。这对我们的自动化构建非常有用,我们将环境变量“spring.profiles.active”设置为我们所处的任何环境,运行集成测试,轻松定位配置错误,以及其他有时可能被忽略的事情。

但是,我想要的是能够在集成测试套件中将 spring.profiles.default 属性设置为“dev”,这样当开发人员从 IDE 运行它们时,他们不会收到错误提示缺少正在设置的配置文件。我们在 web.xml 中执行此操作以进行真正的部署,但我想知道的是如何连接到 AbstractTransactionalJUnit4SpringContextTests(或其他地方)来完成此操作?

最佳答案

我没想到,您正在使用 AbstractTransactionalJUnit4SpringContextTests,这意味着您可以访问 ConfigurableApplicationContext 的实例。我相信你可以说:

class BaseTest extends ATJ4SCT {

  @Autowired
  ConfigurableApplicationContext context;

  @Before
  public void setUp() {
    ConfigurableEnvironment env = context.getEnvironment();
    env.setDefaultProfiles("dev");
    // not sure but if necessary
    context.refresh();

  }

}

引用:ConfigurableEnvironment#setDefaultProfiles(String...) .

虽然主题不同,但也值得一看 this question .

关于java - AbstractTransactionalJUnit4SpringContextTests 中的 Spring 配置文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19296306/

相关文章:

java - Spring 3.0如何做后台计算?

java - Android DatePicker 和 DateFormat 输出格式为 'mm-dd-yyyy'

java - Spring Batch - 使用 ExitStatus 进行流量控制

java - 如何使用 Maven 从 Spring Boot 应用程序中删除所有 jar

spring - JSP 中的 applicationContext 对象

java - spring中有没有相当于struts form tag iterator的?

jquery - 对 Spring MVC Controller 的 AJAX POST 请求不起作用

spring-boot - Yml 配置文件 "Inheritance"与 Spring Boot

基于@Profile 的Spring @Autowire 字段

java - Spring(不是boot)从多个项目加载多个yml文件