混合Hamcrest和TestNG

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

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

背景

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

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

 org.junit.Assert.assertThat( T actual, org.hamcrest.Matcher matcher) 

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

 org.hamcrest.MatcherAssert.assertThat( String reason, T actual, org.hamcest.Matcher matcher) 

此函数抛出java.lang.AssertionError

如果你遇到空方法问题,那么我建议先在依赖列表中添加hamcrest 。 或者导入第一个hamcrest ,它将解决问题。

我正在使用带有rexsl的TestNJ(内部使用Hamcrest),但它找不到空方法。 然后我在依赖列表中首先添加了rexsl,如果你在类路径中添加库,你可以尝试首先添加Hamcrest。

希望它会帮助像我这样的人。

什么对我有用: 1。http : //search.maven.org/

  1. 搜索’java-hamcrest’,最新版本为’2.0.0.0′

  2. 找到Gradle的依赖(在我的例子中)

  3. 在我的项目中为build.gradle添加了编译’org.hamcrest:java-hamcrest:2.0.0.0’。