我想在 TestNG 测试中使用 Hamcrest 匹配器,并专门使用软断言。我怎样才能做到这一点?我知道我可以在如下测试中使用 Hamcrest 的断言:
assertThat(actual, containsInAnyOrder(expected));
Run Code Online (Sandbox Code Playgroud)
但我无法理解如何使用 TestNG 软断言方法,如下所示:
SoftAssert softAssert = new SoftAssert();
Run Code Online (Sandbox Code Playgroud)
与 Hamcrest 匹配器一起使用。
因为我不能像assertThatTestNGsoftAssert一样调用 HamcrestsoftAssert.assertThat(...)
那么,将 Hamcrest 匹配器与 TestNG 一起使用的正确方法是什么?
据我所知,您不能直接SoftAssert将 TestNG 与 hamcrest 匹配器断言混合。
但是您可以利用org.assertj.core.api.SoftAssertionshamcrest 匹配器库来尝试进行软断言。
javadoc有一些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();
}
Run Code Online (Sandbox Code Playgroud)
如果您查看SoftAssertions代码库,您会注意到注释说它受到 Cedric关于软断言的博客的启发。
| 归档时间: |
|
| 查看次数: |
1964 次 |
| 最近记录: |