I am looking for a nice way to active a spring profile for my cucumber tests. The cucumber tests need to use a stubbed version of a service which is marked with:
@Profile("test")
@Component
class FooServiceStub extends FooService {...}
The regular service looks like this:
@Profile("prod")
@Component
class FooService {...}
My requirements:
Run cucumber tests with mvn: $ mvn test Run cucumber tests in IDE Run cucumber tests on build server No need to use the -Dspring.profiles.active=... argumentSources I've found but don't solve my issue:
http://www.baeldung.com/cucumber-spring-integration (using @ContextConfiguration loader with SpringApplicationContextLoader.class which is not present in the latest version of Spring Boot, 1.5.2.RELEASE at the time of writing.) programatically set Spring profile in Cucumber (messing with system property) 解决方案In more recent cucumber version (6.11.0
) you need a class with spring configuration and you have to annotate that one, not the steps definition
@ActiveProfiles("test")
@CucumberContextConfiguration
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
public class CucumberSpringConfiguration {
}