web-dev-qa-db-fra.com

Comment utiliser Hamcrest avec JUnit 5 lorsque JUnit 5 n'a pas de fonction assertThat ()?

Pour utiliser Hamcrest avec JUnit 4, nous utilisons une fonction assertThat(). Cependant, JUnit 5 n'aura plus de fonction assertThat(). Comment utiliser Hamcrest sans assertThat()?

30
Max

Vous devez vous assurer que Hamcrest est inclus dans le chemin de classe, puis utiliser la fonction assertThat() fournie par Hamcrest. À partir de l'actuel Guide d'utilisation de JUnit 5 - Écriture d'assertions de tests ,

La classe org.junit.jupiter.Assertions de JUnit Jupiter ne fournit pas de méthode assertThat () comme celle trouvée dans la classe org.junit.Assert de JUnit 4 qui accepte un Hamcrest Matcher. Au lieu de cela, les développeurs sont encouragés à utiliser la prise en charge intégrée des comparateurs fournie par les bibliothèques d'assertions tierces.

L'exemple suivant montre comment utiliser la prise en charge assertThat () de Hamcrest dans un test JUnit Jupiter. Tant que la bibliothèque Hamcrest a été ajoutée au chemin de classe, vous pouvez importer statiquement des méthodes telles que assertThat (), is () et equalTo (), puis les utiliser dans des tests comme dans la méthode assertWithHamcrestMatcher () ci-dessous.

import static org.hamcrest.CoreMatchers.equalTo;
import static org.hamcrest.CoreMatchers.is;
import static org.hamcrest.MatcherAssert.assertThat;

import org.junit.jupiter.api.Test;

class HamcrestAssertionDemo {

    @Test
    void assertWithHamcrestMatcher() {
        assertThat(2 + 1, is(equalTo(3)));
    }

}

Naturellement, les tests hérités basés sur le modèle de programmation JUnit 4 peuvent continuer à utiliser org.junit.Assert # assertThat. "

38
Max

Voir https://github.com/junit-team/junit5/issues/147 :

vous pouvez utiliser les deux, Hamcrest et AssertJ, dans JUnit5. Les deux frameworks ont une méthode assertThat simple, que vous pouvez importer et utiliser si vous le souhaitez.

Actuellement, nous ne prévoyons pas de prendre en charge ces cadres dans nos propres assertions pour éviter les dépendances. Pourtant, on peut très bien les utiliser.

2
GKislin