AssertJ assertions for Joda-Time

AssertJ assertions for Joda-Time provides assertions for Joda-Time types like DateTime and LocalDateTime.
If you need additional assertions, just create a ticket in the AssertJ Joda-Time issue tracker.

AssertJ Joda-Time is hosted on github : https://github.com/joel-costigliola/assertj-joda-time.

Joda-Time assertions quickstart guide

To quickly start using Joda-Time assertions, follow the steps below.

1 - Add assertj-joda-time dependency to your project pom.xml

<dependency>
 <groupId>org.assertj</groupId>
 <artifactId>assertj-joda-time</artifactId>
 <!-- use 1.1.0 for Java 7 projects -->
 <version>2.2.0</version>
 <scope>test</scope>
</dependency>

If you use another dependency tool, please check this page to find the relevant assertj-joda-time dependency declaration for your tool.

2 - Statically import org.assertj.jodatime.api.Assertions.assertThat ...

... and use your preferred IDEs code completion after assertThat.

Examples :

import static org.assertj.jodatime.api.Assertions.assertThat;
...
assertThat(dateTime).isBefore(firstDateTime);
assertThat(dateTime).isAfterOrEqualTo(secondDateTime);
// you can use Strings in comparisons to avoid a conversion (we do that for you)
assertThat(new DateTime("2000-01-01")).isEqualTo("2000-01-01");
// compare DateTimes ignoring seconds and milliseconds in the comparison
dateTime1 = new DateTime(2000, 1, 1, 23, 50, 0, 0, UTC);
dateTime2 = new DateTime(2000, 1, 1, 23, 50, 10, 456, UTC);
// assertion succeeds
assertThat(dateTime1).isEqualToIgnoringSeconds(dateTime2);

For DateTime assertions, comparison is performed in the DateTimeZone of DateTime to test, consequently the following assertion passes :

DateTime utcTime = new DateTime(2013, 6, 10, 0, 0, DateTimeZone.UTC);
DateTime cestTime = new DateTime(2013, 6, 10, 2, 0, DateTimeZone.forID("Europe/Berlin"));
assertThat(utcTime).as("in UTC time").isEqualTo(cestTime);

You can compare DateTime to another DateTime, or LocalDateTime to LocalDateTime, but not DateTime to LocalDateTime, it doesn't make sense as one is timezone dependent and the other is not.

Note that you can find more working examples in the JodaTimeAssertionsExamples.java class of the assertj-examples project.

Tips & tricks

Using date string representation

To be even easier to use, one can specify DateTime or LocalDateTime with their String representation to avoid manual String conversion, like in the example below :

Example :

// instead of writing ...
assertThat(dateTime).isBefore(new DateTime("2004-12-13T21:39:45.618-08:00"));
// ... you can simply write (if you prefer)
assertThat(dateTime).isBefore("2004-12-13T21:39:45.618-08:00");
Comparing with a precision level

It is possible to compare DateTime or LocalDateTime ignoring time fields below a given a precision. This is handy if you don't want, for example, to consider minutes in the comparison (which also implies to ignore seconds and milliseconds too).

Example :

import static org.assertj.jodatime.api.Assertions.assertThat;
// compare DateTime or LocalDateTime with a precision level, ignoring time fields
dateTime1 = new DateTime(2000, 1, 1, 23, 50, 0, 0, UTC);
dateTime2 = new DateTime(2000, 1, 1, 23, 50, 10, 456, UTC);
// ignore seconds and milliseconds in the comparison
assertThat(dateTime1).isEqualToIgnoringSeconds(dateTime2);

Joda-Time assertions 2.2.0 release

Release date : 2018年06月15日

Thanks to Eugene Strepetov for his contributions.

Release notes:
  • Add LocalDate assertions providing the following ones (Eugene Strepetov):
    • hasYear
    • hasMonthOfYear
    • hasDayOfMonth
    • isBefore
    • isBeforeOrEqualTo
    • isEqualTo
    • isAfter
    • isAfterOrEqualTo
    • isIn
    • isNotEqualTo
    • isNotIn
  • Javadoc improvements.

LocalDate assertions examples

LocalDate localDate = new LocalDate(2000, 1, 1);
assertThat(localDate).hasYear(2000)
 .hasMonthOfYear(1)
 .hasDayOfMonth(1)
 .isBefore(new LocalDate(2000, 1, 2))
 .isBefore("2000-01-02")
 .isBeforeOrEqualTo(new LocalDate(2000, 1, 1))
 .isBeforeOrEqualTo("2000-01-01")
 .isBeforeOrEqualTo(new LocalDate(2000, 1, 2))
 .isBeforeOrEqualTo("2000-01-02")
 .isEqualTo(new LocalDate(2000, 1, 1))
 .isEqualTo("2000-01-01")
 .isAfterOrEqualTo(new LocalDate(2000, 1, 1))
 .isAfterOrEqualTo("2000-01-01")
 .isAfterOrEqualTo(new LocalDate(1999, 12, 31))
 .isAfterOrEqualTo("1999-12-31")
 .isAfter(new LocalDate(1999, 12, 31))
 .isAfter("1999-12-31")
 .isNotEqualTo("2000-01-15")
 .isNotEqualTo(new LocalDate(2000, 1, 15))
 .isIn(new LocalDate(1999, 12, 31), new LocalDate(2000, 1, 1))
 .isIn("1999-12-31", "2000-01-01")
 .isNotIn(new LocalDate(1999, 12, 31), new LocalDate(2000, 1, 2))
 .isNotIn("1999-12-31", "2000-01-02");

Joda-Time assertions 2.1.0 release

Release date : 2018年05月27日

Thanks to John Killmer for his contributions.

Release notes:
  • Add the following DateTime and LocalDateTime assertions (John Killmer):
    • hasYear
    • hasMonthOfYear
    • hasDayOfMonth
    • hasHourOfDay
    • hasMinuteOfHour
    • hasSecondOfMinute
    • hasMillisOfSecond
  • Javadoc improvements.

New assertions examples

DateTime dateTime = new DateTime(1999, 12, 31, 23, 59, 59, 999, DateTimeZone.UTC);
assertThat(dateTime).hasYear(1999) 
 .hasMonthOfYear(12) 
 .hasDayOfMonth(31) 
 .hasHourOfDay(23) 
 .hasMinuteOfHour(59) 
 .hasSecondOfMinute(59) 
 .hasMillisOfSecond(999);

Joda-Time assertions 2.0.0 release

Release date : 2016年04月10日

AssertJ Joda Time 2.0.0 requires Java 8 as it relies on AssertJ Core 3.x, use 1.1.0 version if you are still using Java 7.

Thanks to Pascal Schumacher and David Simmons for their contributions.

Release notes:
  • BREAKING CHANGE : requires Java 8.
  • DateTime assertion : better handling of null in assertions. (David Simmons)
  • To be OS agnostic, replace \n with %n in error messages. (Pascal Schumacher)
  • Better spacing in Javadoc code examples. (Pascal Schumacher)

Joda-Time assertions 1.1.0 release

Release date : 2013年07月14日

Release notes:
  • In DateTime assertions, comparison is performed in the DateTimeZone of the DateTime to check.
  • assertj-joda-time does not impose joda-time 2.2 version anymore, it is compatible with any 2.0+ version.
  • Multiline error message improvements to make it easier to see what was wrong.
  • Javadoc improvements : fix inconsistencies and add more code examples.

Joda-Time assertions 1.0.0 release

2013年03月26日 : 1.0.0 release

First release after Fest fork.

Javadoc of latest release

Latest javadoc release : AssertJ Joda-Time javadoc.

Migrating from Fest Joda-Time assertions

Migrating from Fest Joda-Time to AssertJ Joda-Time Assertions is easy, you only have to change your static import, just replace :

import static org.fest.assertions.api.JODA_TIME

by :

import static org.assertj.joda-time.api.Assertions

For linux users, a quick way to migrate is to use the following command:

find . -name "*.java" -exec sed -i "s/import static org.fest.assertions.api.JODA_TIME/import static org.assertj.jodatime.api.Assertions/g;s/import org.fest.assertions.api.JODA_TIME;/import org.assertj.jodatime.api.Assertions;/g;s/JODA_TIME./Assertions./g" '{}' \;

For mac users, you have an almost identical command (notice the "" after -i) :

find . -name "*.java" -exec sed -i "" "s/import static org.fest.assertions.api.JODA_TIME/import static org.assertj.jodatime.api.Assertions/g;s/import org.fest.assertions.api.JODA_TIME;/import org.assertj.jodatime.api.Assertions;/g;s/JODA_TIME./Assertions./g" '{}' \;

Note: if your project uses both FestAssert Core assertions and Fest Joda-Time assertions, execute the above scripts for Joda-Time before those for FestAssert Core!

Using both AssertJ Core assertions and Joda-Time assertions

You will have to make two static import : one for org.assertj.core.api.Assertions.assertThat to get core assertions and one org.assertj.jodatime.api.Assertions.assertThat for Joda-Time assertions.

import static org.assertj.core.api.Assertions.assertThat;
import static org.assertj.jodatime.api.Assertions.assertThat;
...
// assertThat comes from org.assertj.jodatime.api.Assertions.assertThat static import
assertThat(new DateTime("2000-01-01")).isAfter(new DateTime("1999-12-31"));
// assertThat comes from org.assertj.core.api.Assertions.assertThat static import
assertThat("hello world").startsWith("hello");

Mailing list

If you have any questions, please use the AssertJ google group.

Code and issue tracker

AssertJ Joda-Time is hosted on github : https://github.com/joel-costigliola/assertj-joda-time.

Please report bugs or missing features in the AssertJ Joda-Time issue tracker.

Contributing

Thanks for your interest ! Please check our contributor's guidelines.


AltStyle によって変換されたページ (->オリジナル) /