Platinum Partner

FEST-Assert 1.4: Fluent Interface for Assertions

We are proud to announce that FEST-Assert 1.4 is out!

FEST-Assert is an “assertThat” library that provides a fluent interface for writing assertions. Its main goal is to improve test code readability and make maintenance of tests easier.

Example:

int removed = employees.removeFired();
assertThat(removed).isZero();
 
List newEmployees = employees.hired(TODAY);
assertThat(newEmployees).hasSize(6)
.contains(frodo, sam);
 
String[] newHires = employees.newHiresNames();
assertThat(newHires).containsOnly("Gandalf", "Arwen", "Gimli");
 
assertThat(yoda).isInstanceOf(Jedi.class)
.isEqualTo(foundJedi)
.isNotEqualTo(foundSith);

One of the biggest changes in this release is the implementation of Ansgar’s "Self Types." By using this brilliant technique we ended up with a smaller, cleaner code base that is easier to maintain.

Here are some numbers, comparing this release with the previous one:

Release Lines of code Tests Code coverage
1.3 3,132 3,707 98.7%
1.4 2,051 1,849 100%

Please note that 1.4 has more features than 1.3 and yet the code base is 35% smaller!

Release notes

Bug

  • [FEST-378] - Newly added assertThat(Iterable<?> actual) eagerly calls iterator() and can throw an NPE
  • [FEST-402] - onProperty is unable to access properties from Object class
  • [FEST-414] - Impossible to use Fest Assert 1.3 with Ivy
  • [FEST-415] - IteratorAssert should delay Iterator comsumption as much as possible
  • [FEST-416] - NPE in MapAssert due to FEST-329

Improvement

  • [FEST-105] - Add isEither, or isOneOf
  • [FEST-413] - Implement Ansgar's Self Types
  • [FEST-423] - User-friendly date and calendar formatting

New Feature

  • [FEST-111] - Add support for regular expression matching to StringAssert
  • [FEST-381] - collection onProperty() assert might give nicer exceptions
  • [FEST-400] - Add generic assertions isIn / isNotIn

You can download the latest release here (file fest-assert-1.4.zip.) FEST-Assert requires Java SE 5.0 or later.

Here are some useful links:

Feedback is always appreciated :)

{{ tag }}, {{tag}},

{{ parent.title || parent.header.title}}

{{ parent.tldr }}

{{ parent.urlSource.name }}
{{ parent.authors[0].realName || parent.author}}

{{ parent.authors[0].tagline || parent.tagline }}

{{ parent.views }} ViewsClicks
Tweet

{{parent.nComments}}