5

私は周りを見回してきましたが、何も役に立ちませんでした。日付が広範囲に一致するhamcrestと連携するサードパーティのライブラリはありますか?

具体的には、次のラインに沿ってマッチャーを探しています。

assertThat(myDate, is(withinMinutes(sourceDate, 10)));
assertThat(myDate, is(afterDate(sourceDate)));
assertThat(myDate, is(betweenDates(startDate, endDate)));

私は自分自身を転がす前にそこに何かがあるかどうかを見たかった。

4

2 に答える 2

3

私はあなたが求めているもののように見える一連の日付マッチャーを書きました。ソースはここhttps://github.com/eXparity/hamcrest-dateです。マッチャー内の使用方法の例

assertThat(dateUnderTest, DateMatchers.within(2, TimeUnit.SECONDS, new Date()));

これをpom.xmlに追加するmavenで追加できます

<dependency>
    <groupId>org.exparity</groupId>
    <artifactId>hamcrest-date</artifactId>
    <version>2.0.1</version>
</dependency>
于 2012-09-15T19:25:59.787 に答える
0

fest-assertを試す必要があります。これは hamcrest に準拠していませんが、IMHO はそれよりも優れています (「より流暢」)。たとえば、日付の場合:

@Test
public void is_between_date_assertions_examples() {

    // various usage of isBetween assertion,
    // Note that isBetween(2002-12-17, 2002-12-19) includes start date but end date :
    assertThat(theTwoTowers.getReleaseDate())
            // = 2002-12-18
            .isBetween(theFellowshipOfTheRing.getReleaseDate(), theReturnOfTheKing.getReleaseDate())
            .isBetween(parse("2002-12-17"), parse("2002-12-19")) // [2002-12-17, 2002-12-19[
            .isBetween("2002-12-17", "2002-12-19") // [2002-12-17, 2002-12-19[
            .isNotBetween("2002-12-17", "2002-12-18") // [2002-12-17, 2002-12-18[
            .isBetween("2002-12-17", "2002-12-18", true, true); // [2002-12-17, 2002-12-18]
}

日付を含む完全な例はここにあり、他のものはそこにあります。

于 2012-08-22T14:39:38.200 に答える