我在做什么?
我有一个应用程序,我想在不同的环境中测试 - 开发,登台等
我做什么?
我使用maven cargo
插件来部署应用程序war以运行集成测试。
我需要什么?
我需要根据货物设置的环境变量(
spring.profiles.active
<container>
<containerId>tomcat7x</containerId>
<systemProperties>
<spring.profiles.active>development</spring.profiles.active>
</systemProperties>
</container>
为什么吗
这样我就可以在我的集成测试@ActiveProfiles("development")
中删除硬编码,测试可以从环境变量推断出活动的配置文件
问题
- 我发现Spring integration tests with profile提及使用ActiveProfilesResolver
- 我试图找到如何使用它,但找不到任何资源
我正在寻找有关如何使用ActiveProfilesResolver
答案 0 :(得分:12)
试试这个。我从不同的地方学习并创造了以下内容。它对我有用
public class SpringActiveProfileResolver implements ActiveProfilesResolver {
@Override
public String[] resolve(final Class<?> aClass) {
final String activeProfile = System.getProperty("spring.profiles.active");
return new String[] { activeProfile == null ? "integration" : activeProfile };
}
}
在你的测试课上做这个
@ActiveProfiles(resolver = SpringActiveProfileResolver.class)
public class IT1DataSetup {
......
}