Смешивание Hamcrest и TestNG

Кто-нибудь интегрировал Hamcrest с TestNG, чтобы его помощники могли легко использоваться в утверждениях 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/

  1. Найти "java-hamcrest" последним, так как на данный момент это "2.0.0.0"

  2. найти зависимость для Gradle (в моем случае)

  3. Добавлен компилятор 'org.hamcrest: java-hamcrest: 2.0.0.0' для сборки .gradle в моем проекте.