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

问候,

山姆