带有Hamcrest匹配的TestNG SoftAssert

问题描述 投票:2回答:1

我想在TestNG测试中使用Hamcrest匹配器并专门使用软断言。我怎样才能做到这一点?我知道我可以在测试中使用Hamcrest的断言,例如:

assertThat(actual, containsInAnyOrder(expected));

但我无法理解如何使用像这样的TestNG软断言方法:

SoftAssert softAssert = new SoftAssert();

和Hamcrest匹配器一起使用。

因为我不能像Qazxswpoi那样在TestNG的assertThat上调用Hamcrest的softAssert

那么,与TestNG一起使用Hamcrest匹配器的正确方法是什么?

testng hamcrest
1个回答
2
投票

据我所知,你不能直接将TestNG的softAssert.assertThat(...)与hamcrest匹配器断言混合在一起。

但是你可以在hamcrest matcher库中使用SoftAssert来尝试做软断言。

org.assertj.core.api.SoftAssertionsjavadocs有一些样本。

为了完整起见,我在这里包含了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关于软断言的启发。

© www.soinside.com 2019 - 2024. All rights reserved.