0

我測試我的資料庫進行更新操作Commiting事務處理測試中使用Spring的測試

@Test 

    public void updateStatusByEmailWithEmailCustomer() 
    { 
     customerQuickRegisterRepository.save(standardEmailCustomer()); 

     assertEquals(CUST_STATUS_EMAIL,customerQuickRegisterRepository.findByEmail(CUST_EMAIL).getStatus()); 

     customerQuickRegisterRepository.updateStatusByEmail(CUST_EMAIL,STATUS_EMAIL_VERFIED); 

     assertEquals(STATUS_EMAIL_VERFIED,customerQuickRegisterRepository.findByEmail(CUST_EMAIL).getStatus()); 
    } 

在我救了我的默認狀態實體測試案例之後,我正在將其更改爲其他使用updateStatusByEmail(CUST_EMAIL, STATUS_EMAIL_VERFIED),但是下一個assert語句仍然失敗,這是因爲測試執行過程中的更新在完成測試後才提交。是否有任何方法可以在測試中提交我的更改?

+0

你使用Hibernate(該spring-test模塊的鉛)? – 2014-09-20 09:08:05

+0

yes..hibernate,頂部有彈簧數據jpa。 – MasterCode 2014-09-20 09:10:19

+0

測試是否在事務中運行? – 2014-09-20 09:34:32

回答

1

您可能會因沖洗底層Hibernate Session,因爲這會將您的更改推送到數據庫中的基礎表(在當前的測試管理事務中)。

有關詳細信息,請參閱Spring參考手冊的testing chapter中的「誤報」。

基本上,你會希望你更新電話後和相應的聲明之前,呼籲當前休眠Sessionflush()

如果這樣不能解決您的問題,那麼在Spring Framework 4.1中,您可以在測試中使用新的TestTransaction API programmatic transaction management

問候,

山姆