2012-08-13 15 views
5

He estado buscando pero no he encontrado nada útil. ¿Hay alguna biblioteca de terceros que trabaje con hamcrest que tenga una gran coincidencia de fechas?Biblioteca de Hamcrest para la fecha

Específicamente estoy en busca de comparadores a lo largo de las líneas de:

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

quería ver si había algo por ahí antes Rodé mi propia.

+3

Tal vez debería echar un vistazo a Yoda tiempo, con esta biblioteca debería ser fácil de implementar estos matcher –

+6

¿Es ese un tenedor Jedi de [Joda Time] (http://joda-time.sourceforge.net/)? –

Respuesta

0

Debe probar fest-assert, no es compatible con Hamcrest pero en mi humilde opinión es superior ("más fluido"). Por ejemplo con fecha:

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

El ejemplo completo con la fecha es here, los otros son there.

+0

ambos enlaces ahora no son válidos. – Alex

3

He escrito un conjunto de correlaciones de fechas que se parecen a lo que buscas. La fuente está aquí https://github.com/eXparity/hamcrest-date. Un ejemplo de cómo utilizar el plazo de matcher

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

Usted puede agregarlo con experto añadiendo esto a su pom.xml

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

Creo que lo que está enlazando aquí es en realidad lo que busca el afiche, pero para evitar la percepción de autopromoción, es una buena idea brindar algunos ejemplos en la respuesta de cómo funcionaría. – EdC

+0

Gracias por el aviso, he agregado un ejemplo – stewbis

Cuestiones relacionadas