影响: spring-test 5.3.3
回到5.2.1.RELEASE我可以使用以下命令注释测试类:
@ActiveProfiles("${testprofiles.active:test}")
当提供-Dtestprofiles.active=integrationtest
上下文时将加载已解析的integrationtest
配置文件:
org.springframework.core.env.StandardEnvironment - 激活配置文件 [integrationtest] com.iteratec.MyTest: 以下配置文件处于活动状态:integrationtest
升级到5.3.3后,这似乎不再起作用:
org.springframework.core.env.StandardEnvironment - 激活配置文件 [${testprofiles.active:test}] com.iteratec.MyTest:以下配置文件处于活动状态:${testprofiles.active:test}
因此就会出现回退到根本没有匹配的配置文件/基本属性的情况。
这是预期行为还是错误?
我通过使用自定义的 ActiveProfilesResolver 解决了这个问题:
@ActiveProfiles(value = "test", resolver = SystemPropertyActiveProfilesResolver.class)
public class SystemPropertyActiveProfilesResolver implements ActiveProfilesResolver {
private final DefaultActiveProfilesResolver defaultActiveProfilesResolver = new DefaultActiveProfilesResolver();
@Override
public String[] resolve(Class<?> testClass) {
Assert.notNull(testClass, "Class must not be null");
if (System.getProperties().containsKey("spring.profiles.active")) {
final String profiles = System.getProperty("testprofiles.active");
return profiles.split("\\s*,\\s*");
} else {
return defaultActiveProfilesResolver.resolve(testClass);
}
}
}