Udemy Course Spring JPA 21

Unit Test中的@DirtiesContext做啥用?

ZONGRU Li
2 min readMay 7, 2019

參考CourseRepositoryTest中寫到的

我們在部分的Method上面有加上@DirtiesContext這個annotation

我們在一個Unit Test的Java檔中可能會寫多個測試的Method

如最後的save_basic Method來解釋

我們在save_basic內做了三個operation

找出id為10001的Course

更改id為10001的Course的名稱

再去找出目前id為10001的Course的名稱是否為更改後的

以上的動作有造成資料的修改變動

但是若是多個測試Method在執行可能會造成別人寫好的測試Method失敗

別人單獨只寫了個查找10001的Course的名稱是否為"Spring JPA Course"

但是剛好我的測試方法也正在跑到Update的話該怎麼辦

@DirtiesContext就能區隔不同測試

在完成單一個Metohd測試後,會將對DB資料造的成變化復原

恢復為測試的Method執行前的情況

所以任何有造成資料庫資料修改的測試Method

務必加上@DirtiesContext

--

--

ZONGRU Li
ZONGRU Li

Written by ZONGRU Li

2022/11/17 開源部分個人筆記給LINE "Java程式語言討論區"社群,希望能對社群的技術學習做一點點貢獻.(掩面....記得退訂閱!

No responses yet