Forum Discussion
- mpkorstanjeOccasional Contributor
If you are using the latest Cucumber (v5.7.0) to make Cucumber aware of your test configuration you can annotate a configuration class on your glue path with `@CucumberContextConfiguration` and with one of the following annotations: `@ContextConfiguration`, `@ContextHierarchy` or `@BootstrapWith`. If you are using SpringBoot, you can annotate configuration class with `@SpringBootTest`
For example:
import com.example.app; import org.springframework.boot.test.context.SpringBootTest; import io.cucumber.spring.CucumberContextConfiguration; @CucumberContextConfiguration @SpringBootTest(classes = TestConfig.class) public class CucumberSpringConfiguration { }
You can then `@Autowire` components from the application context into any step definition file. No further spring configuration is needed. For example:
package com.example.app; public class MyStepDefinitions { @Autowired private MyService myService; @Given("feed back is requested from my service") public void feed_back_is_requested(){ myService.requestFeedBack(); } }
The only requirement is that both `MyStepDefinitions` and `CucumberSpringConfiguration` are both in a package that is on the glue path. So either you have configured `@CucumberOptions(glue="com.example")` explicitly or your test runner class is in the same package as your step definition (`com.example`).
You can find more information in the `cucumber-spring` module in github.
https://github.com/cucumber/cucumber-jvm/tree/master/spring- sonya_mSmartBear Alumni (Retired)
Related Content
- 12 months ago
- 5 years ago