混合Hamcrest和TestNG

Rob*_*anu 26 java testng hamcrest

有没有人将Hamcrest与TestNG集成在一起,以便它的匹配器可以很容易地用于TestNG断言?

kev*_*rpe 45

简而言之,回答你的问题:你不需要将TestNG与Hamcrest集成.只需org.hamcrest.MatcherAssert.assertThat(...)直接调用哪个抛出java.lang.AssertionError.

背景

我通过Google找到了您的问题,想知道完全相同的问题.经过进一步的谷歌搜索,我没有找到任何令人满意的答案,所以我阅读了JUnit与Hamcrest集成的源代码.

使用JUnit,Hamcrest集成通常用于调用:

org.junit.Assert.assertThat(
    T actual,
    org.hamcrest.Matcher<? super T> matcher)
Run Code Online (Sandbox Code Playgroud)

当我阅读源代码时,我发现它只是一个小的包装器来调用:

org.hamcrest.MatcherAssert.assertThat(
    String reason,
    T actual,
    org.hamcest.Matcher<? super T> matcher)
Run Code Online (Sandbox Code Playgroud)

这个函数抛出java.lang.AssertionError.

  • 这很好,除了_TestNG_有[软断言](http://static.javadoc.io/org.testng/testng/6.8.21/org/testng/asserts/SoftAssert.html),不能在_Hamcrest_中使用. (4认同)
  • @Bass [软断言] 有一种解决方法(/sf/ask/3650576261/) (2认同)