2012-08-13 36 views
5

我一直在環顧四周,但我還沒有找到任何有用的東西。是否有第三方庫與Hamcrest一起使用,並且有大量的日期匹配?Hamcrest圖書館的日期

具體來說,我正在尋找的線沿線的匹配:

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

我想看看有沒有什麼在那裏之前,我滾我自己。

+3

也許你應該看看尤達時間增加了,與此庫它應該很容易實現這些匹配器 – 2012-08-13 22:57:29

+6

是[Joda時間](http://joda-time.sourceforge.net/)的絕地叉? – 2012-08-14 20:48:26

回答

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] 
} 

完整的例子與日期是here,其他都there

+0

這兩個鏈接現在無效。 – Alex 2014-05-16 20:02:34

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> 
+0

我認爲你在這裏鏈接的實際上是海報之後的內容,但爲了避免對自我推銷的看法,提供一些關於如何運作的答案是一個好主意。 – EdC 2012-09-16 10:05:42

+0

感謝您的提醒,我已經添加了一個示例 – stewbis 2012-09-16 11:40:37