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()));

您可以使用 maven 将其添加到您的 pom.xml

<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 但恕我直言,它优于它(“更流畅”)。例如日期:

@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 回答