0

我有一堂课如下:

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) ??
4

1 回答 1

0

一些你可以做的事情,如果我有选择的话,我会按照粗略的顺序做。

  1. 创建或查找包装日历调用的现有时钟类。然后,您可以提供一个模拟时钟,它返回用户定义的时间,因此是可测试的。这是相当普遍的,如果您不直接依赖静态方法,那么从可测试性的角度来看它会更容易。

  2. 从类的 getCurrentTime 方法中获取时间,然后您可以覆盖该方法。

  3. 编写一个自定义匹配器。示例:http ://toddscodenotes.blogspot.com/2009/09/creating-easy-mock-custom-matcher.html 。

  4. 改为使用 EasyMock.capture() 来捕获呼叫。然后您可以检查捕获对象中的字段。

  5. 查看 EasyMock (PowerMock?) 的扩展,它能够模拟静态。由于您不是在嘲笑日历,因此不确定这是否适用于此。

于 2013-03-07T23:47:53.897 回答