我在JUnit中使用Hibernate和Spring一起進行集成。如果他們正確處理併發,我使用多次讀取和寫入來測試我的代碼。 Hibernate的事情是我不能單獨使用多個線程來模擬。 Hibernate抱怨沒有綁定到DAO的活動Hibernate Session。所以,我所做的工作就是在Thread中的Hibernate的TransactionTemplate中執行DAO的方法,例如,Hibernate + JUnit多線程集成測試
Thread alpha = new Thread(new Runnable() {
@Override
public void run() {
TransactionTemplate tt = new TransactionTemplate(tm);
tt.execute(new TransactionCallbackWithoutResult() {
@Override
public void doInTransactionWithoutResult(TransactionStatus status) {
Address address =addrDao.findBy("John Doe");
address.setZipCode("12345");
addrDao.update(address);
}
});
}
});
用額外的時間延遲創建另一個線程,測試版,但內容相同。最後,啓動兩個線程,
alpha.start();
beta.start();
它工作。我的問題是,除了在Spring + Hibernate + Junit安裝程序中使用TransactionTemplate(...),還有更好的方法嗎?
而且,我發現,行動不能,即使我已經包括@TransactionConfiguration(defaultRollback = true)
在這個測試案例的開始本次測試結束回退。
感謝
嗨,您是否設法找到解決方案? – FourtyTwo