Смешивание Hamcrest и TestNG
Вопрос
Кто-нибудь интегрировал Hamcrest с TestNG, чтобы его средства сопоставления можно было легко использовать в утверждениях TestNG?
Решение
Короче говоря, отвечая на ваш вопрос:Вам не нужно интегрировать TestNG с Hamcrest.Просто позвони org.hamcrest.MatcherAssert.assertThat(...)
непосредственно, который бросает java.lang.AssertionError
.
Фон
Я нашел ваш вопрос через Google, и меня интересует точно такая же проблема.После дальнейшего поиска в Google я не нашел удовлетворительных ответов, поэтому прочитал исходный код интеграции JUnit с Hamcrest.
В JUnit интеграция Hamcrest обычно используется путем вызова:
org.junit.Assert.assertThat(
T actual,
org.hamcrest.Matcher<? super T> matcher)
Когда я прочитал исходный код, я обнаружил, что это всего лишь небольшая оболочка для вызова:
org.hamcrest.MatcherAssert.assertThat(
String reason,
T actual,
org.hamcest.Matcher<? super T> matcher)
Эта функция выбрасывает java.lang.AssertionError
.
Другие советы
Если вы столкнулись с проблемой пустого метода, я бы предложил добавить hamcrest
первый в списке зависимостей.или сначала импортируйте hamcrest
, это решит проблему.
Я использовал TestNJ с rexsl (внутренне используя Hamcrest), и он не смог найти пустой метод.затем я сначала добавил rexsl в список зависимостей. Если вы добавляете библиотеку в путь к классам, вы можете попробовать сначала добавить библиотеку Hamcrest.
надеюсь, это поможет кому-то вроде меня.
Что сработало для меня:1. http://search.maven.org/
Найдите «java-hamcrest», последняя версия на данный момент — «2.0.0.0».
найти зависимость для Gradle (в моем случае)
Добавлена компиляция «org.hamcrest:java-hamcrest:2.0.0.0» в build.gradle в моем проекте.