Aby używać Hamcrest z JUnit 4, używamy funkcji assertThat()
. Jednak JUnit 5 nie będzie już miał funkcji assertThat()
. Jak korzystać z Hamcrest bez numeru assertThat()
?Jak używać Hamcrest z JUnit 5, gdy JUnit 5 nie ma funkcji assertThat()?
Odpowiedz
Musisz upewnić się, że Hamcrest jest zawarty w ścieżce klas, a następnie użyć funkcji assertThat() dostarczonej przez Hamcrest. Z obecnego JUnit 5 User Guide - Writing Tests Assertions, org.junit.jupiter.Assertions klasy
jUnit Jupiter nie przewiduje metodę assertThat() jak ten znaleziony w jUnit 4'S org.junit.Assert klasy, które przyjmuje Hamcrest Matcher. Zamiast tego programiści są zachęcani do korzystania z wbudowanej obsługi dopasowań dostarczanych przez niezależnych bibliotek asercji.
Poniższy przykład ilustruje sposób użycia funkcji assertThat() firmy Hamcrest w teście JUnit Jupiter. Tak długo, jak biblioteka Hamcrest została dodana do ścieżki klasy, możesz statycznie importować metody , takie jak assertThat(), is(), i equalTo(), a następnie używać ich w testach jak w poniższej metodzie assertWithHamcrestMatcher().
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)));
}
}
Oczywiście starsze testy oparte na modelu JUnit 4 Programowanie może dalej korzystać org.junit.Assert # assertThat „.
Co dmucha mój umysł,' assertThat' było powinien to być nowy sposób wykonywania wszystkich twierdzeń, a następnie nagle JUnit 5 wychodzi i jakoś ma wszystkie dotychczasowe metody potwierdzania, ale także usunął jedyną nowoczesną metodę, która była już zdecydowana złamać API, więc " myślę, że mogliby naprawdę tam pojechać i usunąć wszystkie zbędne metody asercji tycznie pomyślałem, że może to dla wygody migracji, ale nie, kolejność parametrów nie jest nawet taka sama. – Trejkaz