Кто-нибудь интегрировал Hamcrest с TestNG, чтобы его помощники могли легко использоваться в утверждениях TestNG?
Смешивание Hamcrest и TestNG
Ответ 1
Короче, чтобы ответить на ваш вопрос: вам не нужно интегрировать TestNG с Hamcrest. Просто вызовите org.hamcrest.MatcherAssert.assertThat(...)
, который выдает java.lang.AssertionError
.
Фон
Я нашел ваш вопрос через Google, задаваясь вопросом точно такой же проблемой. После дальнейшего Googling я не нашел удовлетворительных ответов, поэтому я прочитал исходный код для интеграции 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
.
Ответ 2
Если вы столкнулись с проблемой с пустым методом, я бы предложил добавить hamcrest
сначала в список зависимостей. или импортировать сначала hamcrest
, он решит проблему.
Я использовал TestNJ с rexsl (внутренне используя Hamcrest), и он не смог найти пустой метод. то я добавил rexsl сначала в список зависимостей, если вы добавляете библиотеку в путь класса, вы можете попробовать сначала добавить Hamcrest.
надеюсь, что это поможет кому-то вроде меня.
Ответ 3
Что сработало для меня: 1. http://search.maven.org/
-
Найти "java-hamcrest" последним, так как на данный момент это "2.0.0.0"
-
найти зависимость для Gradle (в моем случае)
-
Добавлен компилятор 'org.hamcrest: java-hamcrest: 2.0.0.0' для сборки .gradle в моем проекте.