如何根据 2 个或更多期望值断言实际值?

新手上路,请多包涵

我正在测试一种方法,看它是否返回正确的字符串。这个字符串由很多行组成,它们的顺序可能会改变,因此通常会给出 2 种可能的组合。该顺序对我的申请并不重要。

但是,因为行的顺序可能会改变,只写一个Assert语句是行不通的,因为有时它会通过测试,有时它会失败。

那么,是否可以编写一个测试,将实际字符串值与 2 个或更多预期字符串值进行断言,并查看它是否等于其中任何一个?

原文由 Alex 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 487
2 个回答

使用 Hamcrest CoreMatcher (包含在 JUnit 4.4 及更高版本中)和 assertThat()

 assertThat(myString, anyOf(is("value1"), is("value2")));

原文由 Joachim Sauer 发布,翻译遵循 CC BY-SA 4.0 许可协议

我会为此使用 AssertJ

 import static org.assertj.core.api.Assertions.*;

assertThat("hello").isIn("hello", "world");

它更简洁,当断言失败时它会给你一个描述性的消息。

原文由 Jonathan 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题