Первый: вам нужно использовать SpringJUnit4ClassRunner
и использовать версию junit> 4.9.
Название аннотации - это немного счетчик интуитивно понятен: он проверяет значение ключа от ProfileValueSource
. По умолчанию только источник SystemProfileValue
настроен весной, обеспечивая доступ к свойствам системы.
Вы можете указать свой собственный ProfileValueSource
, который проверяет, активен профиль, и настройте его для использования с помощью ProfileValueSourceConfiguration
.
Если ваш вариант использования состоит в том, чтобы провести интеграционные тесты, и вы используете Maven, подумайте об использовании с помощью защищенного плагина и отдельных тестов, возможно, даже в другом модуле.
У меня есть короткий пример: из-за очень ранней фазы необходимо учитывать классы тестов, они будут работать только с системными свойствами. Поскольку вы заявили, что используете это в любом случае, вы можете быть довольны этим. Для реальных случаев (CI-сервер и т. Д.) Вы должны использовать более надежный подход, например, отказоустойчивый плагин и систему сборки, поддерживающие отдельные интеграционные тесты.
@RunWith(SpringJUnit4ClassRunner.class)
@ProfileValueSourceConfiguration(ProfileTest.ProfileProfileValueSource.class)
@SpringApplicationConfiguration(classes = ProfileTest.class)
//won't work since not added to system properties!
//@ActiveProfiles("integration")
public class ProfileTest
{
@Test
public void contextLoads()
{
}
@IfProfileValue(name = "integration", value = "true")
@Test
public void runInIntegration()
{
throw new RuntimeException("in integration");
}
@Test
public void runDemo()
{
System.out.println("DEMO, running always");
}
public static class ProfileProfileValueSource implements ProfileValueSource
{
@Override
public String get(String string)
{
final String systemProfiles = System.getProperty("spring.profiles.active", System.getProperty("SPRING_PROFILES_ACTIVE", ""));
final String[] profiles = systemProfiles.split(",");
return Arrays.asList(profiles).contains(string) ? "true" : null;
}
}
}
Я должен был использовать '... .getEnv («SPRING_PROFILES_ACTIVE»), потому что собственность не видит существование/установить еще ?, но кроме того, что это работало. – xenoterracide