繁体   English   中英

通过-D变量设置弹簧单元测试配置文件

[英]Set Spring Unit Test Profile From -D Variables

我有这样的测试

RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = { AppConfig.class, DevConfig.class, ProdConfig.class})
@ActiveProfiles({"prod", "dev"})
public class MyTest {
 ........
}

AppConfig是我的应用程序的主要配置

仅在我的单元测试中创建了两个配置类,DEV配置类从我的src / test / resource /中加载test_dev.properties。

@Configuration
@Profile("dev")
@PropertySource("classpath:test_dev.properties")
public class DevConfig {

}

ProdConfig类加载prod.properties

@Configuration
@Profile("prod")
@PropertySource("classpath:test_prod.properties")
public class ProdConfig {

}

我想通过更改@ActiveProfiles中的值在prod和dev之间轻松切换

但是我希望能够像这样切换测试环境

 mvn -Dspring.profiles.active=dev or prod  install 

我努力了

   @ActiveProfiles({"prod", "dev"})
   then 
   mvn -Dspring.profiles.active=dev or prod  install 

似乎产品总是被捡起

我看过像

@Test
    public void transferTenDollars() throws InsufficientFundsException {
        AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext();
        ctx.getEnvironment().setActiveProfiles("dev");
        ctx.register(TransferServiceConfig.class, StandaloneDataConfig.class, JndiDataConfig.class);
        ctx.refresh();

        // proceed with assertions as above ...
    }

但这将失去使用@ContextConfiguration批注的全部意义。

我认为开关是

-Dspring.profiles.active=dev

甚至作为环境变量

SPRING_PROFILES_ACTIVE=dev mvn install

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM