2011-12-12 71 views
1

我正在使用Spring,JPA使用hibernate進行服務 - > dao層。 交易是春天管理。 我有驗證測試用例,其中,我需要驗證重複數據插入並拋出異常。Transactional Spring Junit4測試用例驗證場景

在我的測試案例,這是擴展AbstractTransactionalJUnit4SpringContextTests

我與defaultRollback配置@TransactionConfiguration作爲事務管理真實和bean名稱(在我的情況下,它JpaTransactionManager接口的豆)

我執行這個測試用例如下步驟

  1. 通過調用dao.create(entity)創建記錄; (這會成功)

  2. 創建一個相同的記錄(以及所有相同的屬性爲在步驟1中設置),並調用dao.create(實體)(這個一定會失敗,但它不是失敗)

  3. 在我創建(實體)方法我調用了validate()方法,該方法引發標量對象查詢(JPQL)來驗證。

我期待驗證失敗,但這個工作毫無例外,重複的數據被插入到數據庫中。我發現選擇查詢(標量查詢)無法獲得正確的數據(理想情況下,它應該獲取至少1條記錄,因爲我在上面列出的步驟1中爲它插入了數據)

我看到在選擇查詢進行驗證之前,在日誌中插入對step1的查詢。

是否有任何其他方式來編寫測試用例,這種情況下涉及spring/jpa與hibernate?

請發表您的看法

在此先感謝!

回答

0

你可以在這裏粘貼你的測試,我相信每個測試都在自己的事務中運行,並且你的defaultRollback爲true。這應該是問題。