解決dao層單元測試問題

2021-04-02 21:47:40 字數 779 閱讀 4638

其實問題已經存在很久,自從使用了open session in test模式後,dao的單元測試就出現了奇怪行為——資料的修改操作不能提交事務,由此導致了一些"違反唯一約束條件"的錯誤。

由於當時只有乙個測試報了錯,我就偷懶把它遮蔽掉了。

由於最近老給同事們講單元測試、要求他們嚴格測試,越發覺得心虛了,於是決定把欠下的賬還上。

昨天下午一直鼓搗到8點多了,越改越亂,還是找不到原因,情緒很低落。

今天重新振作精神,乙個小時就搞定了,哈哈哈哈

原來,事情是這樣的:

protected void setup() throws exception

protected void teardown() throws exception

catch (throwable d)

super.teardown();

dao = null;

}黑體字那句話總是不能提交事務,結果就是插入的多個workflowdriver的writeurl重複了,導致"違反唯一約束條件"錯誤。

可是更奇怪的是,並不是每個測試都錯,而且報錯位置總在乙個查詢方法呼叫處,我靈機一動:難道查詢的操作會導致之前的那些更新操作提交?

一試驗,果然如此,於是我在teardown裡面的刪除操作後面加了乙個查詢的操作,問題就解決了。

protected void teardown() throws exception

catch (throwable d)

super.teardown();

dao = null;

}

Android 針對DAO層的單元測試

新增依賴,3.3.2並不是最新版本 testcompile org.robolectric robolectric 3.3.2 定義資料工具類 定義的字段對應之前資料庫的字段 比如原資料庫需要測試id或name的刪除更新等,根據需求定義 如果資料庫表字段較少,可以直接插入資料,不用定義該類 publ...

controller層的單元測試

base的測試類,其他所有測試類繼承這個類 import org.junit.before import org.junit.test import org.junit.runner.runwith import org.springframework.beans.factory.annotatio...

controller層的單元測試

base的測試類,其他所有測試類繼承這個類 import org.junit.before import org.junit.test import org.junit.runner.runwith import org.springframework.beans.factory.annotatio...