使用具有基本类型数组的hamcrest匹配器

k13*_*13n 22 java testing hamcrest

Hamcrest适用于原始数据类型,因为在这种情况下自动装箱和拆箱:

assertThat(1, is(1));
Run Code Online (Sandbox Code Playgroud)

但是,我想使用hamcrest的hasItemInArraymatcher和一个原始类型数组,如下所示:

int[] values = someMethodCall();
assertThat(values, hasItemInArray(1));
Run Code Online (Sandbox Code Playgroud)

由于原始数据类型的数组没有自动装箱/拆箱,因此上述代码无法编译.有没有任何首选的方法来实现上述,除了手动转换int[]Integer[]

Ste*_*son 12

AFAIK没有实现这一目标的自动方式.如果您可以使用第三方库,您可能需要查看Apache Commons Lang库,它提供了一个带有转换方法的ArrayUtils类:

Integer [] toObject(int [] array)

int[] values = someMethodCall();
Integer[] objValues = ArrayUtils.toObject(values);
assertThat(objValues , hasItemInArray(1));
Run Code Online (Sandbox Code Playgroud)