0

我正在测试我的存储库以进行更新操作

@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) 将其更改为其他,但下一个断言语句仍然失败,这是因为测试执行期间的更新是在之后提交的测试完成......有什么方法可以在测试中提交我的更改?

4

1 回答 1

1

您可能会通过刷新底层 Hibernate来解决Session问题,因为这会将您的更改推送到数据库中的底层表(在当前测试管理的事务中)。

详情请在 Spring 参考手册的测试章节中搜索“误报” 。

基本上,您需要flush()更新调用之后和相应的断言之前调用当前的Hibernate 。Session

如果这不能解决您的问题,使用 Spring Framework 4.1,您可以使用新的TestTransactionAPI在测试中进行编程事务管理。

问候,

Sam(spring-test模块负责人)

于 2014-09-20T22:27:23.263 回答