spring boot整合測試容器重啟問題

2021-10-23 07:41:30 字數 1945 閱讀 3401

背景

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...