有没有人将 Hamcrest 与 TestNG 集成,以便它的匹配器可以轻松地用于 TestNG 断言?
3 回答
简而言之,回答您的问题:您不需要将 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
.
如果您遇到空方法的问题,那么我建议hamcrest
首先在依赖项列表中添加。或先导入hamcrest
,它会解决问题。
我正在使用带有 rexsl 的 TestNJ(内部使用 Hamcrest),但它找不到空方法。然后我首先在依赖项列表中添加了 rexsl,如果您在类路径中添加库,您可以尝试先添加 Hamcrest 库。
希望它会帮助像我这样的人。
什么对我有用:1. http://search.maven.org/
搜索“java-hamcrest”,目前最新的是“2.0.0.0”
找到 Gradle 的依赖项(在我的情况下)
在我的项目中将 compile 'org.hamcrest:java-hamcrest:2.0.0.0' 添加到 build.gradle。