Как активировать весенний загрузочный профиль с огурцом

Я ищу хороший способ активировать весенний профиль для моих тестов на огурце. В тестах на огурец необходимо использовать заглушенную версию службы, которая помечена:

@Profile("test")
@Component
class FooServiceStub extends FooService {...}

Обычное обслуживание выглядит так:

@Profile("prod")
@Component
class FooService {...}    

Мои требования:

  • Запустите тесты огурцов с помощью mvn: $ mvn test
  • Запустить тесты огурцов в IDE
  • Запустить тесты огурца на сервере сборки
  • Нет необходимости использовать аргумент -Dspring.profiles.active = ...

Источники, которые я нашел, но не решают мою проблему:


person Pim Hazebroek    schedule 04.04.2017    source источник


Ответы (1)


Я решил эту проблему с помощью аннотации, которую я поместил в свой класс FeatureStep.

Аннотация:

Обратите внимание на @ActiveProfiles на нем.

import java.lang.annotation.*;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.ActiveProfiles;
import org.springframework.test.context.ContextConfiguration;

@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@ContextConfiguration
@ActiveProfiles("test")
@SpringBootTest(
    webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT, 
    classes = FeatureTestConfiguration.class)
public @interface FeatureFileSteps {
}

Класс конфигурации очень простой:

@Configuration
@Import(FooApplication.class)
public class FeatureTestConfiguration {

}

Использование аннотации:

Добавление аннотации к этапам функции:

@FeatureFileSteps
public class FooFeatureSteps {
    @Given(...)
    @When(...)
    @Then(...)
}

Теперь при запуске тестов функций Cucumber из моей среды IDE, из командной строки с maven или на сервере сборки мой тест использует FooServiceSTub, и мои тесты проходят.

person Pim Hazebroek    schedule 04.04.2017