Spring 测试@ActiveProfiles 替代方案?

Spring Test @ActiveProfiles alternative?

我想为带有外部变量的测试设置活动配置文件 - 例如,VM 选项。我有什么变化吗?

变体 1:使用变量设置 @ActiveProfiles,例如 @ActiveProfile("${testProfile:test}") - 不起作用或我不知道如何。

变体 2:使用任何上下文设置,例如 WebContextInitializer(不适用于测试)。

有什么想法吗?

您或许可以使用 ActiveProfilesResolver

https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/test/context/ActiveProfilesResolver.html

参见下面的示例:

public class MyActiveProfilesResolver  implements ActiveProfilesResolver{
  @Override
  public String[] resolve(Class<?> testClass) {
      String os = System.getProperty("os.name");
      String profile = (os.toLowerCase().startsWith("windows")) ? "windows" : "other";
      return new String[]{profile};
  }
}


@ActiveProfiles(resolver = MyActiveProfilesResolver.class)
public class MyServiceTests {

}