2012-08-13 13 views
5

Mi sono guardato intorno ma non ho trovato nulla di utile. Ci sono delle librerie di terze parti che funzionano con hamcrest che hanno una vasta corrispondenza delle date?Biblioteca Hamcrest per data

In particolare Cerco matchers lungo le linee di:

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

Volevo vedere se c'era qualcosa là fuori prima ho arrotolato la mia.

+3

Forse si dovrebbe dare un'occhiata a Yoda tempo, con questa libreria dovrebbe essere facile da implementare questi matcher –

+6

È un fork Jedi di [Joda Time] (http://joda-time.sourceforge.net/)? –

risposta

0

Si dovrebbe provare fest-assert, non è conforme con hamcrest ma IMHO è superiore ("più fluente"). Per esempio con la data:

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

L'esempio completo con la data è here, gli altri sono there.

+0

entrambi i link non sono più validi. – Alex

3

Ho scritto una serie di abbinamenti di date che sembrano quello che stai cercando. La fonte è qui https://github.com/eXparity/hamcrest-date. Un esempio di come utilizzare il matcher entro

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

È possibile aggiungere con Maven l'aggiunta di questo al vostro pom.xml

<dependency> 
    <groupId>org.exparity</groupId> 
    <artifactId>hamcrest-date</artifactId> 
    <version>2.0.1</version> 
</dependency> 
+0

Penso che quello che stai collegando qui è in realtà ciò che il poster è dopo, ma per evitare la percezione dell'autopromozione è una buona idea fornire alcuni esempi nella risposta di come funzionerebbe. – EdC

+0

Grazie per l'heads-up, ho aggiunto un esempio – stewbis