如何根据 2 个或更多预期值断言实际值?
2022-09-01 01:45:20
我正在测试一种方法,看看它是否返回正确的字符串。此字符串由许多行组成,其顺序可能会更改,因此通常给出 2 种可能的组合。该顺序对我的应用程序并不重要。
但是,由于行的顺序可能会更改,因此仅编写 Assert 语句将不起作用,因为有时它将通过测试,有时它将失败测试。
那么,是否可以编写一个测试,根据 2 个或更多预期字符串值断言实际字符串值,并查看它是否等于其中任何一个?
我正在测试一种方法,看看它是否返回正确的字符串。此字符串由许多行组成,其顺序可能会更改,因此通常给出 2 种可能的组合。该顺序对我的应用程序并不重要。
但是,由于行的顺序可能会更改,因此仅编写 Assert 语句将不起作用,因为有时它将通过测试,有时它将失败测试。
那么,是否可以编写一个测试,根据 2 个或更多预期字符串值断言实际字符串值,并查看它是否等于其中任何一个?
使用Hamcrest CoreMatcher
(包含在JUnit 4.4及更高版本中)和:assertThat()
assertThat(myString, anyOf(is("value1"), is("value2")));
我会使用AssertJ来实现这一点:
import static org.assertj.core.api.Assertions.*;
assertThat("hello").isIn("hello", "world");
它更简洁,当断言失败时,它会给你一个描述性的消息。