A.K*_*han 7 junit easymock date
当我有以下方法时,junit测试会是什么:
@Override
public void saveLastSuccesfullLogin(final User user) {
gebruiker.setLastLogin(new Date());
storeUser(user);
}
Run Code Online (Sandbox Code Playgroud)
submethode storeUser:
@Override
public void storeUser(final User user) {
EntityManager em = emf.createEntityManager();
em.getTransaction().begin();
em.merge(user);
em.getTransaction().commit();
em.close();
}
Run Code Online (Sandbox Code Playgroud)
我遇到的问题是日期,为实体用户设置然后存储.我正在使用junit和easymock.
尝试将 new Date() 拉入具有默认访问说明符的方法中,如下所示
@Override
public void saveLastSuccesfullLogin(final User user) {
gebruiker.setLastLogin(getDate());
storeUser(user);
}
Date getDate() {
return new Date();
}
Run Code Online (Sandbox Code Playgroud)
在您的测试类中,使用模拟或存根日期覆盖该类,如下所示。
<ClassUnderTest> classUnderTest = new <ClassUnderTest> () {
@Override
Date getDate() {
return mockDate;
}
}
Run Code Online (Sandbox Code Playgroud)
通过这种方式,您可以轻松断言日期值,因为它将被删除。