unit test org matchers equalto asserttrue assertequals java testing hamcrest

java - test - Usando matchers de Hamcrest con matrices de tipo primitivo



import static org hamcrest matchers equalto (2)

Hamcrest funciona bien para tipos de datos primitivos debido al boxeo automático y al unboxing, como en este caso:

assertThat(1, is(1));

Sin embargo, me gustaría usar el comparador hasItemInArray hamcrest con una matriz de tipo primitiva como esta:

int[] values = someMethodCall(); assertThat(values, hasItemInArray(1));

Como el código anterior no compila, ya que no hay boxeo / unboxing automático para matrices de tipos de datos primitivos. ¿Hay alguna forma preferida de lograr lo anterior, aparte de la conversión manual de int[] a Integer[] ?


AFAIK no hay una forma automática de lograr esto. Si puede hacer uso de bibliotecas de terceros, es posible que desee revisar la biblioteca Apache Commons Lang , que proporciona una clase ArrayUtils con un método de conversión:

Entero [] toObject (int [] array)

int[] values = someMethodCall(); Integer[] objValues = ArrayUtils.toObject(values); assertThat(objValues , hasItemInArray(1));


Sin embargo, una alternativa a escribir tu propio emparejador sería usar uno en una biblioteca de conmatch como conmatch .

int[] values = someMethodCall(); assertThat(values, intArrayContaining(1));

Supongo que ya hay otros Matchers disponibles en github.