Как использовать 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 метод, который вы можете импортировать и использовать, если хотите.

в настоящее время, мы не планируем поддерживать эти рамки, в наших собственных утверждений, чтобы избежать зависимость. Тем не менее, их можно использовать очень хорошо.