AbstractTransactionalJUnit4SpringContextTests中的Spring配置文件

时间:2013-10-10 12:53:58

标签: java spring spring-profiles

我们有一组集成测试,用于验证各种事物,包括我们的数据库在每个环境(Dev,Test,Qa等)处于与我们的JPA映射和其他数据相关项相关的理智状态。

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

但是,我想要的是能够在集成测试套件中将spring.profiles.default属性设置为“dev”,以便当开发人员从IDE运行它们时,他们不会得到错误抱怨没有设置个人资料。我们在web.xml中进行实际部署,但我想知道的是如何挂钩到AbstractTransactionalJUnit4SpringContextTests(或其他地方)来完成此任务?

2 个答案:

答案 0 :(得分:0)

在我的头脑中,您正在使用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

答案 1 :(得分:0)

似乎不是这样做的一种方式,因此在Intellij中使用junit的默认运行配置中将环境变量spring.profiles.active设置为“dev”。