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. Calendar呼び出しをラップする既存のClockクラスを作成または検索します。次に、ユーザー定義の時間を返す、したがってテスト可能なモッククロックを提供できます。これはかなり一般的であり、静的メソッドに直接依存していない場合は、テスト容易性の観点から簡単です。

  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 に答える