我正在寻找一种有效的方法来激活我的黄瓜测试的弹簧曲线。cucumber测试需要使用带有以下标记的服务的存根版本:
@Profile("test") @Component class FooServiceStub extends FooService {...}
常规服务如下所示:
@Profile("prod") @Component class FooService {...}
我的要求:
我找到了但无法解决我的问题的来源:
我已通过在FeatureStep类上添加注释来解决了此问题。
注释:
注意它上的@ActiveProfiles。
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 { }
配置类非常基础:
@Configuration @Import(FooApplication.class) public class FeatureTestConfiguration { }
使用注释:
将注释添加到功能步骤:
@FeatureFileSteps public class FooFeatureSteps { @Given(...) @When(...) @Then(...) }
现在,从我的IDE,使用maven的命令行或在构建服务器上运行Cucumber功能测试时,我的测试正在使用FooServiceSTub,并且我的测试通过了。