我们有一组集成测试,用于验证各种事情,包括我们的数据库在每个环境(开发、测试、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/