我想在TestNG测试中使用Hamcrest匹配器并专门使用软断言。我怎样才能做到这一点?我知道我可以在测试中使用Hamcrest的断言,例如:
assertThat(actual, containsInAnyOrder(expected));
但我无法理解如何使用像这样的TestNG软断言方法:
SoftAssert softAssert = new SoftAssert();
和Hamcrest匹配器一起使用。
因为我不能像Qazxswpoi那样在TestNG的assertThat
上调用Hamcrest的softAssert
那么,与TestNG一起使用Hamcrest匹配器的正确方法是什么?
据我所知,你不能直接将TestNG的softAssert.assertThat(...)
与hamcrest匹配器断言混合在一起。
但是你可以在hamcrest matcher库中使用SoftAssert
来尝试做软断言。
org.assertj.core.api.SoftAssertions
的javadocs有一些样本。
为了完整起见,我在这里包含了javadocs的代码片段。
SoftAssertions
如果你看看 @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();
}
代码库,你会注意到这些评论说它受到了塞德里克的SoftAssertions关于软断言的启发。