java – hamcrest:如何匹配数组是另一个数组的子集?

鉴于:
int[] a = {1,2,3,4};
int[] b = {1,4,5};

如何断言“a”是使用hamcrest匹配器的“b”的子集?

以下作品

assertThat(Arrays.asList(b),hasItems(a));

但是,由于我从“b”创建了“a”,所以我宁愿将“a”作为该值.
就像是

assertThat(a,isSubsetOf(b));

另外,最好避免将数组转换成列表.

解决方法

您可以使用 EveryIsIn匹配器的组合:
assertThat(Arrays.asList(a),everyItem(isIn(b)));

这样会检查是否每个项目都包含在b中.确保a和b的类型为整数[],否则可能会产生意想不到的结果.

在最新版本中,将isIn替换为,自第一个has been deprecated起.

相关文章

Java中的String是不可变对象 在面向对象及函数编程语言中,不...
String, StringBuffer 和 StringBuilder 可变性 String不可变...
序列化:把对象转换为字节序列的过程称为对象的序列化. 反序...
先说结论,是对象!可以继续往下看 数组是不是对象 什么是对...
为什么浮点数 float 或 double 运算的时候会有精度丢失的风险...
面试题引入 这里引申出一个经典问题,看下面代码 Integer a ...