【发布时间】:2021-02-17 16:03:19
【问题描述】:
有没有办法断言一个实际值等于多个值中的任何一个?
例子:
String original = "...";
Collection<String> permittedTransformations = Set.of("...[1]", "...[2]", "...[3]");
String actual = transform(original);
assertThat(actual, isContainedIn(permittedTransformations));
我可以看到我可以交换参数:
assertThat(permittedTransformations, contains(actual));
但这颠倒了语义。我没有检查permittedTransformations 是否正确;我正在检查actual。
【问题讨论】:
-
hamcrest 有匹配器
in()和oneOf()可以与is()组合,所以你可以写:is(in(permittedTransformations)) -
@SergeiTonoian 谢谢,我找不到
in(),但我找到了类似名称的org.hamcrest.collection.IsIn.isIn(),这正是我想要的。我之前没有找到它,因为我只在 CoreMatchers 中查找。 -
我可能正在检查最新版本的文档,但是是的,您也可以使用 isIn(),但不知道您使用的是什么版本,但现在它已被弃用
-
@SergeiTonoian 感谢您让我知道弃用,我确实在我们的旧代码库中使用了旧版本。