0
我有這樣的設置彈簧單元測試配置文件從-D變量
RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = { AppConfig.class, DevConfig.class, ProdConfig.class})
@ActiveProfiles({"prod", "dev"})
public class MyTest {
........
}
測試了AppConfig是我的應用程序的主要配置
有剛剛創建來回我的單元測試兩個配置類 從我的src /測試/資源的DEV配置類負載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註解整點。
你是正確的環境。但刪除@ActiveProfiles({「prod」}) 是解決我的問題的關鍵 – user5324782
原因刪除@ActiveProfiles({「prod」,「dev」})解決了問題是因爲,而不是從您的代碼中指定活動配置文件,你想從命令行env var傳遞它。因此不需要做一個@ActiveProfiles – user5324782