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