Cucumber Spring Test @ConfigurationProperties не внедряет свойства в поля объекта

Я занимаюсь разработкой тестовой аттестации спрингбут + огурец и селен. Моя весенняя огуречная инфраструктура сформирована из https://github.com/cucumber/cucumber-jvm/tree/master/spring.

@RunWith(Cucumber.class)
@CucumberOptions(
    plugin = "json:out/cucumber.json",
    features = {"classpath:features"},
    glue = {"my.package"})
public class SeleniumCukes{}

Мой класс недвижимости

@Data
@Configuration
@ConfigurationProperties(prefix = "application")
public class ApplicationProperty {
    private String baseUrl;
}

Мое application.yml

application:
   base-url: https://www.google.com/

Мое определение шага

public class SomeStep{
   @Autowired
   private SomePage somePage;

   @Autowired
   private ApplicationProperty applicationProperty;

   @Given("^Go to Some Page$")
   public void catalogUserIsOnTheLoginPage() throws Throwable {
       somePage.navigateTo("some url");
       applicationProperty.getBaseUrl(); //Cucumber spring do not inject configuration property here.
   }
   ...etc
}

Когда я аннотирую свое определение шага с помощью @SpringBootTest

@SpringBootTest
public class SomeStep{
   @Autowired
   private SomePage somePage;

   @Autowired
   private ApplicationProperty applicationProperty;

   @Given("^Go to Some Page$")
   public void catalogUserIsOnTheLoginPage() throws Throwable {
       somePage.navigateTo("some url");
       applicationProperty.getBaseUrl(); //Cucumber spring do inject configuration property here.
   }
   ...etc

}

Теперь весной введите свойство приложения, но IntelliJ выдает ошибку: не удалось выполнить автоматическое подключение. бины типа 'somePage' не найдены.

Зависимости:

dependencies {
    compile('org.springframework.boot:spring-boot-starter')
    compile('org.seleniumhq.selenium:selenium-server:3.13.0')
    compile('org.projectlombok:lombok')
    testCompile('org.springframework.boot:spring-boot-starter-test')
    testCompile('io.cucumber:cucumber-java:2.4.0')
    testCompile('io.cucumber:cucumber-junit:2.4.0')
    testCompile('io.cucumber:cucumber-spring:2.4.0')
    testCompile('org.springframework:spring-tx')

} Весенняя загрузочная версия 2.0.3.RELEASE

1 ответ

Более новая версия Spring Boot автоматически включает @ConfigurationPropertiesтак что ваниль @SpringBootTestпросто работает. Через огурец-юнит.. тоже самое не работает и надо настраивать "по старинке" добавляя @EnableConfigurationPropertiesв контекст вашего тестового шага.

Пример огурца 7:

      @CucumberContextConfiguration
@EnableConfigurationProperties // <<< Add this
@SpringBootTest
Другие вопросы по тегам