摘要:因為只有這樣才能夠在測試環(huán)境下發(fā)現(xiàn)生產(chǎn)環(huán)境的問題,也避免出現(xiàn)一些因為配置不同導致的奇怪問題。而方法則能夠不改變原有配置不提供新的配置的情況下,就能夠關閉。
Github地址
在Chapter 1: 基本用法 - 使用Spring Boot Testing工具里提到:
除了單元測試(不需要初始化ApplicationContext的測試)外,盡量將測試配置和生產(chǎn)配置保持一致。比如如果生產(chǎn)配置里啟用了AutoConfiguration,那么測試配置也應該啟用。因為只有這樣才能夠在測試環(huán)境下發(fā)現(xiàn)生產(chǎn)環(huán)境的問題,也避免出現(xiàn)一些因為配置不同導致的奇怪問題。
那么當我們想在測試代碼里關閉Auto Configuration如何處理?
方法1:提供另一套測試配置
方法2:使用@OverrideAutoConfiguration
方法1雖然能夠很好的解決問題,但是比較麻煩。而方法2則能夠不改變原有配置、不提供新的配置的情況下,就能夠關閉Auto Configuration。
在本章節(jié)的例子里,我們自己做了一個Auto Configuration類,AutoConfigurationEnableLogger:
@Configuration public class AutoConfigurationEnableLogger { private static final Logger LOGGER = LoggerFactory.getLogger(AutoConfigurationEnableLogger.class); public AutoConfigurationEnableLogger() { LOGGER.info("Auto Configuration Enabled"); } }
并且在META-INF/spring.factories里注冊了它:
org.springframework.boot.autoconfigure.EnableAutoConfiguration= me.chanjar.annotation.overrideac.AutoConfigurationEnableLogger
這樣一來,只要Spring Boot啟動了Auto Configuration就會打印出日志:
2017-08-24 16:44:52.789 INFO 13212 --- [ main] m.c.a.o.AutoConfigurationEnableLogger : Auto Configuration Enabled例子1:未關閉Auto Configuration
源代碼見BootTest:
@SpringBootTest @SpringBootApplication public class BootTest extends AbstractTestNGSpringContextTests { @Test public void testName() throws Exception { } }
查看輸出的日志,會發(fā)現(xiàn)Auto Configuration已經(jīng)啟用。
例子2:關閉Auto Configuration然后我們用@OverrideAutoConfiguration關閉了Auto Configuration。
源代碼見BootTest:
@SpringBootTest @OverrideAutoConfiguration(enabled = false) @SpringBootApplication public class BootTest extends AbstractTestNGSpringContextTests { @Test public void testName() throws Exception { } }
再查看輸出的日志,就會發(fā)現(xiàn)Auto Configuration已經(jīng)關閉。
參考文檔Spring Framework Testing
Spring Boot Testing
Context configuration with test property sources
文章版權歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://www.ezyhdfw.cn/yun/70283.html
摘要:地址提供了,能夠很方便的來測試。同時也提供了更進一步簡化了測試需要的配置工作。本章節(jié)將分別舉例說明在不使用和使用下如何對進行測試。例子測試的關鍵是使用對象,利用它我們能夠在不需啟動容器的情況下測試的行為。 Github地址 Spring Testing Framework提供了Spring MVC Test Framework,能夠很方便的來測試Controller。同時Spring...
摘要:地址是提供的方便測試序列化反序列化的測試工具,在的文檔中有一些介紹。例子簡單例子源代碼見使用通包下的文件測試結(jié)果是否正確或者使用基于的校驗例子測試可以用來測試。這個例子里使用了自定義的測試代碼例子使用事實上也可以配合一起使用。 Github地址 @JsonTest是Spring Boot提供的方便測試JSON序列化反序列化的測試工具,在Spring Boot的文檔中有一些介紹。 需要注...
摘要:源代碼見需要注意的是,如果是專供某個測試類使用的話,把它放到外部并不是一個好主意,因為它有可能會被掃描到,從而產(chǎn)生一些奇怪的問題。 Github地址 既然我們現(xiàn)在開發(fā)的是一個Spring項目,那么肯定會用到Spring Framework的各種特性,這些特性實在是太好用了,它能夠大大提高我們的開發(fā)效率。那么自然而然,你會想在測試代碼里也能夠利用Spring Framework提供的特...
摘要:地址在使用工具中提到在測試代碼之間盡量做到配置共用。本章將列舉幾種共享測試配置的方法我們可以將測試配置放在一個里,然后在測試或中引用它。也可以利用的及自定義機制,提供自己的用在測試配置上。 Github地址 在使用Spring Boot Testing工具中提到: 在測試代碼之間盡量做到配置共用。...能夠有效利用Spring TestContext Framework的緩存機制,Ap...
摘要:地址可以用來覆蓋掉來自于系統(tǒng)環(huán)境變量系統(tǒng)屬性的屬性。同時優(yōu)先級高于。利用它我們可以很方便的在測試代碼里微調(diào)模擬配置比如修改操作系統(tǒng)目錄分隔符數(shù)據(jù)源等。源代碼例子使用工具也可以和一起使用。源代碼見參考文檔 Github地址 @TestPropertySource可以用來覆蓋掉來自于系統(tǒng)環(huán)境變量、Java系統(tǒng)屬性、@PropertySource的屬性。 同時@TestPropertySou...
閱讀 3629·2021-09-22 15:50
閱讀 3288·2019-08-30 15:54
閱讀 2818·2019-08-30 14:12
閱讀 3122·2019-08-30 11:22
閱讀 2145·2019-08-29 11:16
閱讀 3632·2019-08-26 13:43
閱讀 1263·2019-08-23 18:33
閱讀 978·2019-08-23 18:32