我们有一组集成测试,用于验证各种事物,包括我们的数据库在每个环境(Dev,Test,Qa等)处于与我们的JPA映射和其他数据相关项相关的理智状态。
我们通过Spring Profile配置我们要连接的数据库和其他环境特定的东西。这在我们的自动构建中非常有用,我们将环境变量“spring.profiles.active”设置为我们所处的环境,运行集成测试,轻松查找配置错误以及其他有时可能被忽略的事情。
但是,我想要的是能够在集成测试套件中将spring.profiles.default属性设置为“dev”,以便当开发人员从IDE运行它们时,他们不会得到错误抱怨没有设置个人资料。我们在web.xml中进行实际部署,但我想知道的是如何挂钩到AbstractTransactionalJUnit4SpringContextTests(或其他地方)来完成此任务?
答案 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”。