我想在 TestNG 测试中使用 Hamcrest 匹配器,并专门使用软断言。我怎样才能做到这一点?我知道我可以在测试中使用 Hamcrest 的断言,例如:
assertThat(actual, containsInAnyOrder(expected));
但我不明白如何使用 TestNG 软断言方法,如下所示:
SoftAssert softAssert = new SoftAssert();
与 Hamcrest 匹配器一起使用。
因为我无法调用 Hamcrest 的assertThat
在 TestNG 上softAssert
like softAssert.assertThat(...)
那么,将 Hamcrest 匹配器与 TestNG 一起使用的正确方法是什么?
据我所知,你不能直接混合SoftAssert
来自 TestNG 和 hamcrest 匹配器断言。
但你可以利用org.assertj.core.api.SoftAssertions
在 hamcrest 匹配器库中尝试进行软断言。
The javadocs http://joel-costigliola.github.io/assertj/core/api/org/assertj/core/api/SoftAssertions.html for SoftAssertions
有一些样品。
为了完整起见,我在此处包含了 javadoc 中的代码片段。
@Test
public void host_dinner_party_where_nobody_dies() {
Mansion mansion = new Mansion();
mansion.hostPotentiallyMurderousDinnerParty();
SoftAssertions softly = new SoftAssertions();
softly.assertThat(mansion.guests()).as("Living Guests").isEqualTo(7);
softly.assertThat(mansion.kitchen()).as("Kitchen").isEqualTo("clean");
softly.assertThat(mansion.library()).as("Library").isEqualTo("clean");
softly.assertThat(mansion.revolverAmmo()).as("Revolver Ammo").isEqualTo(6);
softly.assertThat(mansion.candlestick()).as("Candlestick").isEqualTo("pristine");
softly.assertThat(mansion.colonel()).as("Colonel").isEqualTo("well kempt");
softly.assertThat(mansion.professor()).as("Professor").isEqualTo("well kempt");
softly.assertAll();
}
如果你看一下软断言 https://github.com/joel-costigliola/assertj-core/blob/master/src/main/java/org/assertj/core/api/SoftAssertions.java代码库,你会注意到注释说它是受到 Cedric 的启发blog http://beust.com/weblog/2012/07/29/reinventing-assertions关于软断言。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)