Search code examples
springtestingspring-bootcucumberfeature-file

How to activate spring boot profile with cucumber


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=... argument

Sources I've found but don't solve my issue:


Solution

  • 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 {
    }