天天看點

持續內建之路——使用SpringTestDbunit管理資料集的一個問題

在進行資料通路的單元測試,一般都會新增資料記錄的情況,那麼在設定資料集一般會是:

然後在測試方法中,通過驗證新增的記錄數或者新增記錄的内容,確定被測試方法正确執行:

上面的測試方法,在多數情況會正常運作,不會出現問題,但是卻留下一個隐患:如果同時存在包含了user的資料集,驗證記錄數的斷言很可能會失敗。比如,存在一個測試中使用的資料集:

這是testAddUser方法很可能出現"Expect: 1,Actual: 3"的失敗資訊。

要徹底解決這個問題也很簡單,隻需要将會新增資料的表設定為空就行了:

問題的原因:SpringTestDbunit在執行測試之前會檢查DatabaseSetup注解,對資料集中指定的表進行CLEAN_INSERT操作,而資料集中沒有提到的表則會保持不變。是以要想徹底清空一個表,必須要指定一個空記錄。