Mixing Hamcrest and TestNG

不问归期 提交于 2019-12-02 16:39:42

In short, to answer your question: You don't need to integrate TestNG with Hamcrest. Just call org.hamcrest.MatcherAssert.assertThat(...) directly which throws java.lang.AssertionError.

Background

I found your question via Google, wondering exactly the same issue. After further Googling, I didn't find any satisfying answers, so I read the source code for JUnit's integration with Hamcrest.

With JUnit, Hamcrest integration is normally used by calling:

org.junit.Assert.assertThat(
    T actual,
    org.hamcrest.Matcher<? super T> matcher)

When I read the source code, I discovered it just a small wrapper to call:

org.hamcrest.MatcherAssert.assertThat(
    String reason,
    T actual,
    org.hamcest.Matcher<? super T> matcher)

This function throws java.lang.AssertionError.

Shobhit

If you are facing problem with empty method then I would suggest to add hamcrest first in dependency list. or import first hamcrest, it will solve the problem.

I was using TestNJ with rexsl(internally using Hamcrest) and it fails to find empty method. then I added rexsl first in dependency list, if you are adding library in class path you can try to add first the Hamcrest one.

hope it will help someone like me.

What worked for me: 1. http://search.maven.org/

  1. Search for 'java-hamcrest' the latest as for now is '2.0.0.0'

  2. find dependency for Gradle (in my case)

  3. Added compile 'org.hamcrest:java-hamcrest:2.0.0.0' to build.gradle in my project.

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!