0

私はmockitoを使用しており、カスタムの日付クラスがあり、テストクラスでこの日付クラスをモックできるようにしたいので、次のことを試しました:

    MVDate date = Mockito.mock(MYDate.class);
    Mockito.when(date.get(Calendar.MONTH)).thenReturn(5);

MYDate クラス:

public class MYDate extends GregorianCalendar implements Comparable<Calendar> {

public MYDate() {
        setTime(new Date());
    }

}

ただし、印刷しようとすると、new MYDate();常に現在の日付が印刷されます。新しいデータインスタンスを作成するすべてのメソッドを特定の日付でテストできるように、カレンダークラスをモックする方法を教えてください。

4

4 に答える 4

1

Java 8java.time.Clockクラス

Java 8の新しいjava.time.* パッケージClockには、開発およびテスト中に日時をモックするためのクラスが含まれています。

Joda-Time

思い出すと、人気のあるJoda-Timeフレームワークにも時計を偽装する機能があります。

変換中

相互運用性の必要に応じて、これらのフレームワークと java.util.Date クラスの両方の日時オブジェクトを簡単に変換できます。

于 2014-02-08T07:38:58.893 に答える
0

あなたのコードでは、特定のメソッド「cal.get()」をモックしています。

assertEquals(cal.get(Calendar.MONTH), 5);

この場合、上記のステートメントは true になりますが、cal.getTime() は別のものを返します。代わりに cal.getTime() をモックするつもりでしたか?

于 2013-08-04T22:14:59.463 に答える