2

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

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

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

4

2 回答 2

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...)

虽然题目不同,但或许也值得看看这个问题

于 2013-10-10T14:06:42.097 回答
0

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

于 2013-10-21T20:30:01.030 回答