Как использовать Hamcrest с JUnit 5, когда JUnit 5 не имеет функции assertThat ()?
для использования Hamcrest с JUnit 4 мы используем . Однако JUnit 5 больше не будет иметь . Как использовать Hamcrest без assertThat()
?
2 ответов
вы должны убедиться, что Hamcrest включен в путь к классам, а затем использовать функцию assertThat (), предоставленную Hamcrest. От текущей JUnit 5 Руководство Пользователя-Написание Тестов Утверждения,
организация Юпитера JUnit.тесты JUnit.Юпитер.Класс Assertions не предоставляет assertThat () метод, подобный тому, который найден в организации JUnit 4.тесты JUnit.Утверждать класс, который принимает Hamcrest Matcher. Вместо этого разработчики рекомендуется использовать встроенную поддержку вычислителей обеспечивается сторонние библиотеки утверждений.
в следующем примере показано, как использовать поддержку assertThat () от Hamcrest в теста JUnit Юпитера. Пока библиотека Hamcrest был добавлен в путь к классам, вы можете статически импортировать методы например, assertThat (), is () и equalTo (), а затем использовать их в тестах как и в методе 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)));
}
}
естественно, устаревшие тесты, основанные на модель программирования JUnit 4 может продолжайте использовать org.тесты JUnit.Assert#assertThat."
см.https://github.com/junit-team/junit5/issues/147:
вы можете использовать оба, Hamcrest и AssertJ, в JUnit5. Оба фреймворка имеют простой assertThat метод, который вы можете импортировать и использовать, если хотите.
в настоящее время, мы не планируем поддерживать эти рамки, в наших собственных утверждений, чтобы избежать зависимость. Тем не менее, их можно использовать очень хорошо.