特定のテストケースの日付の前後にテストする必要があります。可能であれば Hamcrestマッチャー を使用したいと思います。
日付を操作するためのHamcrest(Java)のマッチャーはありますか?もしそうなら、どのパッケージ/クラスで特定の日付マッチャー関数を見つけることができますか?
OrderingComparison :: greaterThan マッチャーは、それ自体に匹敵するすべての型で機能します(org.hamcrest.number
パッケージですが、実際には番号固有ではありません)。日付はそのようなタイプです。
https://github.com/eXparity/hamcrest-date には、ライブラリによって提供されるhamcrest日付マッチャーのライブラリがあります。これは、maven、ivyなどでも利用できます。
<dependency>
<groupId>org.exparity</groupId>
<artifactId>hamcrest-date</artifactId>
<version>1.1.0</version>
</dependency>
日付のさまざまなマッチャーをサポートしているため、次のような構成が可能です。
Date myBirthday = new Date();
MatcherAssert.assertThat(myBirthday, DateMatchers.after(Moments.today()));
または
Date myBirthday = new Date();
MatcherAssert.assertThat(myBirthday, DateMatchers.isToday());
Hamcrestに追加される新しいDate Matcherを見ることができます(いつ考えたかはわかりません)。
githubでの日付マッチャーのディスカッション/コードの変更
簡単に見てみると、新しいパッケージorg.hamcrest.dateが含まれているようです:
日付に関連するテストの一部を容易にすることができる特定のhamcrest拡張機能があります。 ここをチェックしてください。
Matchers#greaterThan
マッチャーはDate
sおよび他のComparable
オブジェクトで動作します。
あなたの日付がいくつかの期待される日付以上であることを確認する方法は次のとおりです:
import static org.hamcrest.Matchers.equalTo;
import static org.hamcrest.Matchers.greaterThan;
import static org.hamcrest.core.AnyOf.anyOf;
...
Date expectedMin = new Date()
// Execute the method being tested
Date resultDate = getDate();
// Validate
assertThat(resultDate, anyOf(greaterThan(expectedMin), equalTo(expectedMin)))
https://assertj.github.io/doc/#assertj-core-recursive-comparison
org.assertj:assertj-core:3.12.2
assertThat(actual)
.usingRecursiveComparison()
.ignoringFieldsMatchingRegexes("fieldToIgore")
.isEqualTo(expected);
Cirneco拡張 もあります。いくつかのDate
固有のマッチャー(たとえばmonday()
)と、Comparable
の実装のために日付に適用される他のマッチャーがあります(たとえば、between()
を参照)。 betweenInclusive()
)。ライブラリのJDK7バージョンのJoda Timeと、JDK8バージョン(主にLocalDate
)の新しい日付ベースのクラスもサポートする予定です。
次のようなアサーションを実行できます。
final Date date = new Date();
assertThat(date, is(monday())); // JUnit style
given(date).assertIs(monday()); // Cirneco style
JDK7準拠のプロジェクトには、次の依存関係を使用できます。
<dependency>
<groupId>it.ozimov</groupId>
<artifactId>Java7-hamcrest-matchers</artifactId>
<version>0.7.0</version>
</dependency>
またはJDK8を使用している場合は以下
<dependency>
<groupId>it.ozimov</groupId>
<artifactId>Java8-hamcrest-matchers</artifactId>
<version>0.7.0</version>
</dependency>