Les différents frameworks de test unitaire Java viennent avec un ensemble d'assertions basiques.
assertEquals("expected", result);
asertTrue(result);
assertSame(expectedObj, actualObj);
assertNull(actualObj);
assertJ est une bibliothèque d'assertion plus complète et fortement typée, inspirée d'une autre bibliothèque, fest-assert. Ainsi, assertJ propose une API "fluent" avec des assertions spécifiques selon le type voulu.
assertThat("hello world").startWith("hello");
assertThat(10).isGreaterThan(2);
De plus, assertJ prend en compte les types les plus courants du JDK, comme ceux de l'API Collections, BigDecimal, Date et propose donc des assertions spécifiques pour ces différentes classes.
assertThat(Arrays.asList("a", "b", "c")).hasSize(3);
assertThat(Arrays.asList("a", "b", "c")).containsExactly("a", "b", "c");
assertThat(aMap).containsEntry("ip", "127.0.0.1");
assertThat(new BigDecimal("99.99")).isGreaterThan(BigDecimal.ZERO);
assertThat(new Date()).isBefore("2013-07-01");
Joel Costigliola, créateur d'assertJ, vient de publier la version 1.3.0 d'assertJ. Cette nouvelle version apporte des assertions sur le type Class.
assertThat(Serializable.class).isInterface();
// vérifie que la class Personne possède les champs "prenom" et "nom"
assertThat(Personne.class).hasDeclaredFields("prenom","nom");
Elle introduit également de nouvelles assertions sur les Throwables et les tableaux.
La version 1.3.0 d'assertJ est disponible sur le repository central de maven. Vous pouvez la rendre disponible, dans votre projet Maven, en l'ajoutant en tant que dépendance dans votre pom.xml :
<dependency>
<groupId>org.assertj</groupId>
<artifactId>assertj-core</artifactId>
<version>1.3.0</version>
<scope>test</scope>
</dependency>