所以我使用Hibernate的注解@CreationTimestamp
和@UpdateTimestamp
。它工作得很好,但我在单元测试时遇到过这种情况,我需要在特定日期创建对象。
我认为这是不可能的停用这个注解,所以我想到的第一件事是删除它们,并做这样的事情:
@PrePersist
public void prePersist() {
if (createdDate == null) {
createdDate = new Date();
}
}
我不喜欢这种方式,因为我将不得不为一个测试用例对我的实体进行重构。
我认为另一个更好的解决方案是使用我需要的数据创建一个sql文件,并在运行测试之前使用Spring执行它。
你认为做这件事最好的方法是什么?
3条答案
按热度按时间xfb7svmp1#
我在测试中遇到过同样的问题,我想到的最好的解决方案是:模拟Clock.systemUTC中的静态方法,使其返回Clock.fixed()
nle07wnf2#
不要仅仅为了一个测试用例而改变你的产品代码。只是修改测试对象的创建日期属性吗?
zed5wv103#
在我的例子中,配备了
@UpdateTimestamp
的属性的数据类型是LocalDateTime
。我是这样解决的: