混合 Hamcrest 和 TestNG
Posted
技术标签:
【中文标题】混合 Hamcrest 和 TestNG【英文标题】:Mixing Hamcrest and TestNG 【发布时间】:2010-11-08 17:51:27 【问题描述】:是否有人将 Hamcrest 与 TestNG 集成,以便可以轻松地在 TestNG 断言中使用其匹配器?
【问题讨论】:
【参考方案1】:如果您遇到空方法的问题,那么我建议在依赖列表中首先添加hamcrest
。或者先导入hamcrest
,就可以解决问题了。
我正在使用带有 rexsl 的 TestNJ(内部使用 Hamcrest),但它找不到空方法。 然后我首先在依赖列表中添加了 rexsl,如果您在类路径中添加库,您可以尝试先添加 Hamcrest 。
希望它能帮助像我这样的人。
【讨论】:
【参考方案2】:简而言之,回答您的问题:您不需要将 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)
当我阅读源代码时,我发现它只是一个可以调用的小包装器:
org.hamcrest.MatcherAssert.assertThat(
String reason,
T actual,
org.hamcest.Matcher<? super T> matcher)
这个函数抛出java.lang.AssertionError
。
【讨论】:
这很好,除了 TestNG 有 soft assertions 不能从 Hamcrest 使用。 @Bass soft assertions 有一个解决方法【参考方案3】:什么对我有用: 1.http://search.maven.org/
搜索“java-hamcrest”,目前最新的是“2.0.0.0”
找到 Gradle 的依赖项(在我的例子中)
在我的项目中将 compile 'org.hamcrest:java-hamcrest:2.0.0.0' 添加到 build.gradle。
【讨论】:
以上是关于混合 Hamcrest 和 TestNG的主要内容,如果未能解决你的问题,请参考以下文章
[软件测试_LAB1]安装junit和hamcrest及其使用
软件测试实验——junit, hamcrest 和 eclemma的安装及使用
Junit,hamcrest,eclemma单元测试基础(java)
JUNIT,HAMCREST,ECLEMMA单元测试基础(JAVA)