本文介紹了Spring-boot,使用不同配置文件的JUnit測試的處理方法,對大家解決問題具有一定的參考價值,需要的朋友們下面隨著小編來一起學習吧!
問題描述
我正在嘗試使用JUnit使用application.properties配置文件進行集成測試,以便檢查兩個不同的平臺。
我嘗試使用包含兩個平臺通用配置的基本配置文件application.properties
執行此操作,在此基礎上,我為每個平臺添加了具有特定平臺配置的屬性文件application-tensorflow.properties
application-caffe.properties
,但我發現它在JUnit中的工作方式與我在主應用程序中使用的方法不同。
我的測試配置類如下所示:
@Configuration
@PropertySource("classpath:application.properties")
@CompileStatic
@EnableConfigurationProperties
class TestConfig {...}
我使用的是@PropertySource("classpath:application.properties")
,所以它會識別我的基本配置,我在那里也寫了spring.profiles.active=tensorflow
,希望它能識別TensorFlow應用程序配置文件,但是它不會像在主應用程序中那樣從文件/src/test/resources/application-tensorflow.properties
或/src/main/resources/application-tensorflow.properties
中讀取。
在JUnit測試中是否有指定彈簧配置文件的特殊方法?實現我正在嘗試的目標的最佳實踐是什么?
推薦答案
首先:將@ActiveProfiles
添加到您的測試類以定義活動配置文件。
此外,您還需要配置應加載配置文件。有兩個選項:
在與@ContextConfiguration(classes = TheConfiguration.class, initializers = ConfigFileApplicationContextInitializer.class)
的簡單集成測試中
在使用@SpringBootTest
的完全Spring Boot測試中
測試類示例:
@RunWith(SpringRunner.class)
@SpringBootTest
@ActiveProfiles({ "test" })
public class DummyTest {
@Autowired
private Environment env;
@Test
public void readProps() {
String value = env.getProperty("prop1") + " " + env.getProperty("prop2");
assertEquals("Hello World", value);
}
}
現在評估文件src/test/resources/application.properties
和src/test/resources/application-test.properties
。
這篇關于Spring-boot,使用不同配置文件的JUnit測試的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,