首页 > 解决方案 > 模拟 @UpdateTimestamp 休眠注解

问题描述

我有一个包含 updated_time 列的实体。实体使用@UpdateTimestamp休眠注释自动处理更新。在我的测试中,我需要使用 7 天前的 update_time 值播种一些旧数据。

是否可以模拟@UpdateTimestamp返回特定日期而不模拟System.currentTimeMillis()

注意:我使用的测试框架是用于模拟的 JUnit & Mockito。

标签: javahibernatemockito

解决方案


我会感到惊讶,如果有一个 mockito 注释,那并不是它的真正范围。您可以在测试中使用 Hibernate后加载拦截器来更新您的数据。

但是,如果您想获得更高的可靠性,您可以使用 dbunit并在每次测试之前创建适当的数据库设置,因此不需要通过 hibernate 进行操作。

为此,可以使用一个内存数据库,并为每个测试从头开始创建测试数据,这样您就不会受到您操作的某些现有数据设置的束缚。我认为H2很受欢迎。


推荐阅读