Dernière modification : Dec 08 , 2024

Assertions et contraintes avec Hamcrest

Créer des assertions et des contraintes avec Hamcrest

A quoi sert Hamcrest ?

Honnêtement, je n'ai que très rarement vu utilisé ce framework à son plein potentiel

Les cas d'utilisations que j'ai répertorié :

  • dans l'utilisation des méthodes Mockito.when(), Mockito.verify()
  • pour comparer des DTO ou des Entités
  • dans les assertions de JUnit 5

C'est quoi Hamcrest ?

  • Hamcrest est un framework pour écrire des comparateurs ou des
    validateurs.
  • Les assertions JUnit5 peuvent être améliorées en utilisant Hamcrest, il faut passer un comparateur pour expliquer comment et quoi on évalue.
import org.junit.jupiter.api.Test;
import static org.hamcrest.MatcherAssert.assertThat; 
import static org.hamcrest.Matchers.*;

public class BiscuitTest {
  @Test 
  public void testEquals() { 
    Biscuit ceBiscuit = new Biscuit("Madeleine"); 
    Biscuit monBiscuit = new Biscuit("Madeleine"); 
    assertThat(ceBiscuit, equalTo(monBiscuit)); 
  } 
} 
Matcher Utilisation
is Sucre syntaxique
anything Matche tout
allOf vrai si tous les matchers sont vérifiés (opérateur ET)
anyOf vrai si au moins un est vrai (opérateur OU)
not vrai si le matcher ne matche pas
equalTo comparaison avec Object.equals
instanceof comparaison avec instanceof
notNullValue vrai si la valeur est non null
nullValue vrai si la valeur est nulle
hasProperty vrai si le getter retourne xxx
closeTo vrai si le flottant est proche de la valeur indiquée
greaterThan, lessThan ... opérateurs de comparaison

Assertions et contraintes avec Hamcrest

Created by Sylvain Leroy

Cette leçon aborde la gestion des assertions et des contraintes avec JUnit et le framework Hamcrest.

Documentation et resources

Sites intéressants