如何運(yùn)行每個(gè)測(cè)試方法后重置spring上下文

1.背景

項(xiàng)目中在寫測(cè)試用例的時(shí)候遇到了一個(gè)問題擎颖,我用spring初始化的h2數(shù)據(jù)庫,當(dāng)前一個(gè)測(cè)試用例運(yùn)行過后观游,數(shù)據(jù)被修改搂捧,就變成了臟數(shù)據(jù),如果后一個(gè)測(cè)試用例再使用這條數(shù)據(jù)就可能無法通過測(cè)試懂缕。同樣异旧,如果前一個(gè)用例修改了spring的bean屬性,后面一個(gè)測(cè)試用例同樣會(huì)有問題√嵊叮基于這樣的情況,我可能希望每次運(yùn)行測(cè)試用例spring的上下文都能被重新初始化一下荤崇,這樣可以保證一個(gè)清潔的spring上下文環(huán)境拌屏。

2.@DirtiesContext

于是我現(xiàn)了spring提供了@DirtiesContext這樣一個(gè)注解。@DirtiesContext是一個(gè)spring測(cè)試注釋术荤,用于指示應(yīng)在每次測(cè)試運(yùn)行后刪除并重新加載應(yīng)用程序上下文緩存倚喂。 刪除的應(yīng)用程序上下文也將被關(guān)閉。@DirtiesContext可以在方法級(jí)別和類級(jí)別聲明瓣戚。

3.@DirtiesContext工作流程

如果測(cè)試方法使用@DirtiesContext注釋端圈,或者測(cè)試類使用@DirtiesContext注釋并且classMode設(shè)置為ClassMode.AFTER_EACH_TEST_METHOD,則測(cè)試上下文的應(yīng)用程序上下文將被標(biāo)記為臟并關(guān)閉子库。
如果在類級(jí)別聲明@DirtiesContext且classMode設(shè)置為ClassMode.AFTER_CLASS舱权,則在運(yùn)行測(cè)試類的所有測(cè)試之后將關(guān)閉應(yīng)用程序上下文。


image.png

4.解決問題

所以根據(jù)上面的了解仑嗅,我只需要在每個(gè)類上增加@DirtiesContext(classMode = DirtiesContext.ClassMode.AFTER_EACH_TEST_METHOD)即可保證每次運(yùn)行測(cè)試用例都會(huì)重新初始spring上下文宴倍。

5.最后

雖然使用@DirtiesContext,可以保證每個(gè)test class的執(zhí)行上下文的獨(dú)立性仓技、隔離性鸵贬,但是也會(huì)有讓測(cè)試運(yùn)行速度變慢的副作用。所以在使用@DirtiesContext前脖捻,弄清楚你是否真的需要使用它阔逼。

具體示例參考
https://www.javarticles.com/2016/03/spring-dirtiescontext-annotation-example.html

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市地沮,隨后出現(xiàn)的幾起案子嗜浮,更是在濱河造成了極大的恐慌羡亩,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,265評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件周伦,死亡現(xiàn)場(chǎng)離奇詭異夕春,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)专挪,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,078評(píng)論 2 385
  • 文/潘曉璐 我一進(jìn)店門及志,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人寨腔,你說我怎么就攤上這事速侈。” “怎么了迫卢?”我有些...
    開封第一講書人閱讀 156,852評(píng)論 0 347
  • 文/不壞的土叔 我叫張陵倚搬,是天一觀的道長。 經(jīng)常有香客問我乾蛤,道長每界,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,408評(píng)論 1 283
  • 正文 為了忘掉前任家卖,我火速辦了婚禮眨层,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘上荡。我一直安慰自己趴樱,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,445評(píng)論 5 384
  • 文/花漫 我一把揭開白布酪捡。 她就那樣靜靜地躺著叁征,像睡著了一般。 火紅的嫁衣襯著肌膚如雪逛薇。 梳的紋絲不亂的頭發(fā)上捺疼,一...
    開封第一講書人閱讀 49,772評(píng)論 1 290
  • 那天,我揣著相機(jī)與錄音永罚,去河邊找鬼帅涂。 笑死,一個(gè)胖子當(dāng)著我的面吹牛尤蛮,可吹牛的內(nèi)容都是我干的媳友。 我是一名探鬼主播,決...
    沈念sama閱讀 38,921評(píng)論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼产捞,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼醇锚!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,688評(píng)論 0 266
  • 序言:老撾萬榮一對(duì)情侶失蹤焊唬,失蹤者是張志新(化名)和其女友劉穎恋昼,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體赶促,經(jīng)...
    沈念sama閱讀 44,130評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡液肌,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,467評(píng)論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了鸥滨。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片嗦哆。...
    茶點(diǎn)故事閱讀 38,617評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖婿滓,靈堂內(nèi)的尸體忽然破棺而出老速,到底是詐尸還是另有隱情,我是刑警寧澤凸主,帶...
    沈念sama閱讀 34,276評(píng)論 4 329
  • 正文 年R本政府宣布橘券,位于F島的核電站,受9級(jí)特大地震影響卿吐,放射性物質(zhì)發(fā)生泄漏旁舰。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,882評(píng)論 3 312
  • 文/蒙蒙 一嗡官、第九天 我趴在偏房一處隱蔽的房頂上張望鬓梅。 院中可真熱鬧,春花似錦谨湘、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,740評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至续担,卻和暖如春擅耽,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背物遇。 一陣腳步聲響...
    開封第一講書人閱讀 31,967評(píng)論 1 265
  • 我被黑心中介騙來泰國打工乖仇, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人询兴。 一個(gè)月前我還...
    沈念sama閱讀 46,315評(píng)論 2 360
  • 正文 我出身青樓乃沙,卻偏偏與公主長得像,于是被迫代替她去往敵國和親诗舰。 傳聞我的和親對(duì)象是個(gè)殘疾皇子警儒,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,486評(píng)論 2 348