How to activate spring boot profile with cucumber

那年仲夏 提交于 2019-12-02 07:22:29

问题


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:

  • 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)

回答1:


I've solved this issue with an annotation that I put on my FeatureStep class.

The annotation:

Note the @ActiveProfiles on it.

import java.lang.annotation.*;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.ActiveProfiles;
import org.springframework.test.context.ContextConfiguration;

@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@ContextConfiguration
@ActiveProfiles("test")
@SpringBootTest(
    webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT, 
    classes = FeatureTestConfiguration.class)
public @interface FeatureFileSteps {
}

The configuration class is very basic:

@Configuration
@Import(FooApplication.class)
public class FeatureTestConfiguration {

}

Using the annotation:

Adding the annotation to the feature steps:

@FeatureFileSteps
public class FooFeatureSteps {
    @Given(...)
    @When(...)
    @Then(...)
}

Now when running the Cucumber feature tests, either from my IDE, from the command line with maven or on the build server, my test is using the FooServiceSTub and my tests pass.



来源:https://stackoverflow.com/questions/43203301/how-to-activate-spring-boot-profile-with-cucumber

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!