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