当前位置: 首页 > 知识库问答 >
问题:

如何用cucumber激活Spring开机配置文件

朱自明
2023-03-14
@Profile("test")
@Component
class FooServiceStub extends FooService {...}
@Profile("prod")
@Component
class FooService {...}    
    null

我找到的消息来源,但没有解决我的问题:

  • http://www.baeldung.com/cucumber-spring-integration(使用@ContextConfiguration loader和SpringApplicationContextLoader.class(在撰写本文时的最新版本Spring Boot1.5.2中没有)。
  • 在Cucumber中编程设置Spring配置文件(与系统属性混淆)

共有1个答案

段阳夏
2023-03-14

2021年10月更新:

下面的答案已经过时,不再是公认的答案。请检查实际接受的答案改为!

原文答案:

请注意上面的@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(...)
}
 类似资料:
  • 下面是我的Spring boot(2.4.5)应用程序的应用程序yaml,有两个配置文件。 Spring:配置文件:dev 但是根据环境配置文件可以不同。我不想硬编码配置文件

  • 我有5个环境: 我希望对每个环境使用不同的应用程序属性,因此我有以下属性文件,每个属性文件都有不同的数据源URL: 我正在使用IntelliJ并在本地机器上的Gradle插件中使用bootRun运行我的应用程序。我将使用在运行Tomcat的所有其他环境中部署相同的应用程序war文件。 我尝试添加: --spring.profiles.active=local 到脚本参数下的运行配置。 我尝试添加

  • 出于某种原因,我不得不使用环境变量,而不是将系统属性传递给mvn命令。所以,我使用${env。PROFILE}作为属性名,pom.xml中的配置文件设置显示如下: 然后,我尝试激活配置文件到在线,但我失败了,命令行显示如下: 然后打开maven调试模式(-X),属性如下所示: 我们可以在上述属性列表中找到属性: “PROFILE”变量似乎是在envrionment中设置的。但是,“在线”配置文件未

  • 我有一个用maven作为构建工具的应用程序。 我正在使用maven概要文件从不同的概要文件设置不同的属性。 假设我运行带有out的maven,并指定我希望spring的任何其他概要文件,将和作为活动概要文件。

  • 给定一个测试类,如: 我得到了错误: java.lang.IllegalStateException:配置错误:发现测试类[com.example.myControllerTest]的多个@BootStrapWith声明:[@org.springframework.test.context.bootStrapWith(value=class org.springframework.boot.tes

  • 我试图为dev、ct、e2e和prod创建Spring Boot配置文件。我正在使用application-*.yml文件来提供配置文件特定的设置。我能够成功激活ct和prod配置文件,但我不能激活开发和e2e配置文件。 我只在Intellij中观察到过这个问题。这是IntelliJ中的bug,还是我遗漏了什么?