2017-04-07 2 views

Antwort

12

Sie müssen sicherstellen, dass Hamcrest im Klassenpfad enthalten ist und dann die von Hamcrest bereitgestellte assertThat() -Funktion verwenden. Aus den aktuellen JUnit 5 User Guide - Writing Tests Assertions,

JUnit Jupiters org.junit.jupiter.Assertions Klasse einen assertThat() -Methode wie die nicht in org.junit.Assert Klasse JUnit 4 ist gefunden bereitzustellen, die ein hamcrest Matcher akzeptiert. Stattdessen werden die Entwickler dazu aufgefordert, die integrierte Unterstützung für Matchierer zu verwenden, die von Drittanbieter-Assertion-Bibliotheken bereitgestellt werden.

Das folgende Beispiel zeigt, wie die assertThat() - Unterstützung von Hamcrest in einem JUnit Jupiter-Test verwendet wird. Solange die Hamcrest-Bibliothek dem Klassenpfad hinzugefügt wurde, können Sie die Methoden wie assertThat(), is() und equalTo() statisch importieren und dann in Tests wie in der assertWithHamcrestMatcher() - Methode weiter unten verwenden.

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))); 
    } 

} 

Natürlich Legacy-Tests auf der Basis der JUnit 4 Programmiermodell kann weiterhin org.junit.Assert # assertThat verwenden.“

+2

Was bläst mein Geist ist,' assertThat' war sollte die neue Art sein, alle Behauptungen zu machen, und plötzlich kommt JUnit 5 heraus und hat irgendwie noch alle Legacy-Assert-Methoden, aber hat auch die einzige moderne Version entfernt. Sie waren bereits dazu verpflichtet, die API zu brechen. Ich glaube, sie hätten wirklich dorthin gehen und alle redundanten Assertionsmethoden entfernen können Ich dachte, dass es vielleicht für die Bequemlichkeit der Migration war, aber nein, die Reihenfolge der Parameter ist nicht gleich. – Trejkaz

Verwandte Themen