背景
spring boot test的專案中常用的測試框架, 最近在寫整合測試的時候發現乙個比較奇怪的問題,當我在執行多個測試用例的時候會偶爾重新啟動整個容器上下文,由於後期業務逐漸複雜,大量的測試用例需要執行,這個問題直接導致回歸測試的效率降低。
舉個例子:
幾個類:
@runwith
(springrunner.
class
)@springboottest
class
)public
class
baseapitest
}public
class
apitest1
extends
baseapitest
}public
class
apitest2
extends
baseapitest
}@slf4j
public
class
}@component
public
class
service
}
執行test包下所有測試:
發現容器重複啟動了。
測試用例的執行流程
*
@param testclass the test class
for which the configuration was merged
*@param locations the merged context resource locations
*@param classes the merged annotated classes
*@param contextinitializerclasses the merged context initializer classes
*@param activeprofiles the merged active bean definition profiles
*@param propertysourcelocations the merged locations
*@param propertysourceproperties the merged properties
*@param contextcustomizers the context customizers
*@param contextloader the resolved
*@param cacheawarecontextloaderdelegate a cache-aware context loader
* delegate with which to retrieve the parent context
*@param parent the parent configuration or
if there is no parent
結論
分析原始碼的設計,發現應用了很多spi與可擴充套件的設計,idea與junit的解耦,junit的抽象與模板定義與各個測試框架的擴充套件。針對容器重啟的角度,對於乙個類來說,一定是共享乙個spring上下文,但是不同的類可能由於注入的bean的方式不同導致無法共享spring上下文,所以導致重啟會浪費掉一些時間,因此建議確定好mock的邊界,對盡量多的測例共享乙個容器視角可以提高單測效率,基於此可以設計多繼承關係的單測結構,並把注入的bean向上共享,避免各個測試子類自己去注入出現不一致的情況。
springBoot整合dubbo整合專案
傳統spring 整合dubbo,需要繁瑣的編寫一堆堆的 xml 配置檔案 而springboot整合dubbo後,不在需要寫 xml,通過jar包引用,完 成整合,通過註解的形式完成配置。提高我們的開發效率 目錄結構 1 服務層生產者開發 hs ldm server service 1.1新增du...
SpringBoot整合系列 整合Swagger2
io.springfox springfox swagger2 2.7.0 io.springfox springfox swagger ui 2.7.0 一般無配置項,必要時可以新增自定義配置項,在配置類中讀取 swagger2的配置內容僅僅就是需要建立乙個docket例項 configurati...
SpringBoot整合PageHelper外掛程式
springboot整合pagehelper外掛程式的時候主要分為以下幾步?1.在pom.xml中引入依賴 com.github.pagehelper pagehelper spring boot starter 1.2.3 分頁外掛程式 pagehelper.helperdialect mysql...