摘要:地址可以用來覆蓋掉來自于系統環境變量系統屬性的屬性。同時優先級高于。利用它我們可以很方便的在測試代碼里微調模擬配置比如修改操作系統目錄分隔符數據源等。源代碼例子使用工具也可以和一起使用。源代碼見參考文檔
Github地址
@TestPropertySource可以用來覆蓋掉來自于系統環境變量、Java系統屬性、@PropertySource的屬性。
同時@TestPropertySource(properties=...)優先級高于@TestPropertySource(locations=...)。
利用它我們可以很方便的在測試代碼里微調、模擬配置(比如修改操作系統目錄分隔符、數據源等)。
例子1: 使用Spring Testing工具我們先使用@PropertySource將一個外部properties文件加載進來,PropertySourceConfig:
@Configuration @PropertySource("classpath:me/chanjar/annotation/testps/ex1/property-source.properties") public class PropertySourceConfig { }
file: property-source.properties foo=abc
然后我們用@TestPropertySource覆蓋了這個property:
@TestPropertySource(properties = { "foo=xyz" ...
最后我們測試了是否覆蓋成功(結果是成功的):
@Test public void testOverridePropertySource() { assertEquals(environment.getProperty("foo"), "xyz"); }
同時我們還對@TestPropertySource做了一些其他的測試,具體情況你可以自己觀察。為了方便你觀察@TestPropertySource對系統環境變量和Java系統屬性的覆蓋效果,我們在一開始打印出了它們的值。
源代碼TestPropertyTest:
@ContextConfiguration(classes = PropertySourceConfig.class) @TestPropertySource( properties = { "foo=xyz", "bar=uvw", "PATH=aaa", "java.runtime.name=bbb" }, locations = "classpath:me/chanjar/annotation/testps/ex1/test-property-source.properties" ) public class TestPropertyTest extends AbstractTestNGSpringContextTests implements EnvironmentAware { private Environment environment; @Override public void setEnvironment(Environment environment) { this.environment = environment; Map例子2: 使用Spring Boot Testing工具systemEnvironment = ((ConfigurableEnvironment) environment).getSystemEnvironment(); System.out.println("=== System Environment ==="); System.out.println(getMapString(systemEnvironment)); System.out.println(); System.out.println("=== Java System Properties ==="); Map systemProperties = ((ConfigurableEnvironment) environment).getSystemProperties(); System.out.println(getMapString(systemProperties)); } @Test public void testOverridePropertySource() { assertEquals(environment.getProperty("foo"), "xyz"); } @Test public void testOverrideSystemEnvironment() { assertEquals(environment.getProperty("PATH"), "aaa"); } @Test public void testOverrideJavaSystemProperties() { assertEquals(environment.getProperty("java.runtime.name"), "bbb"); } @Test public void testInlineTestPropertyOverrideResourceLocationTestProperty() { assertEquals(environment.getProperty("bar"), "uvw"); } private String getMapString(Map map) { return String.join(" ", map.keySet().stream().map(k -> k + "=" + map.get(k)).collect(toList()) ); } }
@TestPropertySource也可以和@SpringBootTest一起使用。
源代碼見TestPropertyTest:
@SpringBootTest(classes = PropertySourceConfig.class) @TestPropertySource( properties = { "foo=xyz", "bar=uvw", "PATH=aaa", "java.runtime.name=bbb" }, locations = "classpath:me/chanjar/annotation/testps/ex1/test-property-source.properties" ) public class TestPropertyTest extends AbstractTestNGSpringContextTests implements EnvironmentAware { // ... }參考文檔
Spring Framework Testing
Spring Boot Testing
Context configuration with test property sources
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/70250.html
摘要:地址提供了,能夠很方便的來測試。同時也提供了更進一步簡化了測試需要的配置工作。本章節將分別舉例說明在不使用和使用下如何對進行測試。例子測試的關鍵是使用對象,利用它我們能夠在不需啟動容器的情況下測試的行為。 Github地址 Spring Testing Framework提供了Spring MVC Test Framework,能夠很方便的來測試Controller。同時Spring...
摘要:因為只有這樣才能夠在測試環境下發現生產環境的問題,也避免出現一些因為配置不同導致的奇怪問題。而方法則能夠不改變原有配置不提供新的配置的情況下,就能夠關閉。 Github地址 在Chapter 1: 基本用法 - 使用Spring Boot Testing工具里提到: 除了單元測試(不需要初始化ApplicationContext的測試)外,盡量將測試配置和生產配置保持一致。比如如果生產...
摘要:地址是提供的方便測試序列化反序列化的測試工具,在的文檔中有一些介紹。例子簡單例子源代碼見使用通包下的文件測試結果是否正確或者使用基于的校驗例子測試可以用來測試。這個例子里使用了自定義的測試代碼例子使用事實上也可以配合一起使用。 Github地址 @JsonTest是Spring Boot提供的方便測試JSON序列化反序列化的測試工具,在Spring Boot的文檔中有一些介紹。 需要注...
摘要:源代碼見需要注意的是,如果是專供某個測試類使用的話,把它放到外部并不是一個好主意,因為它有可能會被掃描到,從而產生一些奇怪的問題。 Github地址 既然我們現在開發的是一個Spring項目,那么肯定會用到Spring Framework的各種特性,這些特性實在是太好用了,它能夠大大提高我們的開發效率。那么自然而然,你會想在測試代碼里也能夠利用Spring Framework提供的特...
摘要:地址在使用工具中提到在測試代碼之間盡量做到配置共用。本章將列舉幾種共享測試配置的方法我們可以將測試配置放在一個里,然后在測試或中引用它。也可以利用的及自定義機制,提供自己的用在測試配置上。 Github地址 在使用Spring Boot Testing工具中提到: 在測試代碼之間盡量做到配置共用。...能夠有效利用Spring TestContext Framework的緩存機制,Ap...
閱讀 3296·2021-11-24 09:39
閱讀 3878·2021-11-22 09:34
閱讀 4824·2021-08-11 11:17
閱讀 1067·2019-08-29 13:58
閱讀 2580·2019-08-28 18:18
閱讀 547·2019-08-26 12:24
閱讀 834·2019-08-26 12:14
閱讀 739·2019-08-26 11:58