28

有没有人将 Hamcrest 与 TestNG 集成,以便它的匹配器可以轻松地用于 TestNG 断言?

4

3 回答 3

49

简而言之,回答您的问题:您不需要将 TestNG 与 Hamcrest 集成。直接调用org.hamcrest.MatcherAssert.assertThat(...)which throws 即可java.lang.AssertionError

背景

我通过谷歌找到了你的问题,想知道完全相同的问题。在进一步谷歌搜索后,我没有找到任何令人满意的答案,所以我阅读了 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.

于 2013-05-11T06:28:04.540 回答
2

如果您遇到空方法的问题,那么我建议hamcrest首先在依赖项列表中添加。或先导入hamcrest,它会解决问题。

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

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

于 2012-11-28T06:43:28.173 回答
0

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

  1. 搜索“java-hamcrest”,目前最新的是“2.0.0.0”

  2. 找到 Gradle 的依赖项(在我的情况下)

  3. 在我的项目中将 compile 'org.hamcrest:java-hamcrest:2.0.0.0' 添加到 build.gradle。

于 2017-06-29T16:41:00.973 回答