Junit 与 new Date()

2024-01-21

当我有以下方法时,junit 测试会是什么:

@Override
public void saveLastSuccesfullLogin(final User user) {
    gebruiker.setLastLogin(new Date());
    storeUser(user);
}

子方法storeUser:

@Override
public void storeUser(final User user) {
    EntityManager em = emf.createEntityManager();

    em.getTransaction().begin();
    em.merge(user);
    em.getTransaction().commit();

    em.close();
}

我遇到的问题是为实体用户设置日期然后存储。我使用 junit 和 easymock。


尝试将 new Date() 拉入具有默认访问说明符的方法中,如下所示

@Override
public void saveLastSuccesfullLogin(final User user) {
    gebruiker.setLastLogin(getDate());
    storeUser(user);
}
Date getDate() {
    return new Date();
}

在您的测试类中,使用模拟或存根日期覆盖该类,如下所示。

<ClassUnderTest> classUnderTest = new <ClassUnderTest> () {
  @Override 
  Date getDate() {
    return mockDate;
  } 
}

通过这种方式,您可以轻松断言日期值,因为它将被删除。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Junit 与 new Date() 的相关文章

随机推荐