我有一个课程如下:
public class MyClass{
Connector con;
public MyClass(Connector con){
this.con= con;
}
public void save(Xyz xyz){
//save 2 instances of xyz one with lastupdatetime as 0 and other with
// currenttimestamp
xyz.setLastUpdateTime(0) ; a
con.save(xyz) ;
xyz.setLastUpdateTime(Calender.getInstance().getCurrentTimeInMillis() );
con.save(xyz);
}
}
如何使用easymock编写测试用例。
问题是方法在运行时找到时间戳。它与模拟对象中的不同。我可以忽略Xyz类的特定参数
我可以指定在模拟时忽略特定属性的内容吗?
Easymock.expect(con.save(xyz)).andReturn(something) ??
答案 0 :(得分:0)
你能做的一些事情,如果我有选择,我会按照粗略的顺序做。
创建或查找包装Calendar调用的现有Clock类。然后,您可以提供一个模拟的时钟,它返回用户定义的时间,因此是可测试的。这是相当常见的,如果您不直接依赖静态方法,从可测试性的角度来看会更容易。
从类中获取getCurrentTime方法的时间,然后可以覆盖该方法。
编写自定义匹配器。示例:http://toddscodenotes.blogspot.com/2009/09/creating-easy-mock-custom-matcher.html。
使用EasyMock.capture()来捕获调用。然后,您可以检查捕获对象中的字段。
查看EasyMock(PowerMock?)的扩展,它具有静态静态的能力。不确定这是否适用于此,因为你没有嘲笑日历。