2013-08-21 11 views
18

Hamcrest działa dobrze dla prymitywnych typów danych dzięki automatycznemu boksu i unboxing jak w tym przypadku:Korzystanie dopasowujących hamcrest z prymitywnych tablic typu

assertThat(1, is(1)); 

Jednak chciałbym skorzystać hamcrest za hasItemInArray matcher z prymitywnego typu tablicy tak:

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

Ponieważ nie ma automatycznego boks/unboxing dla tablic prymitywnych typów danych powyższy kod nie kompiluje. Czy jest jakiś preferowany sposób wykonania powyższego, inny niż ręczna konwersja z int[] do Integer[]?

Odpowiedz

11

AFAIK nie ma automatycznego sposobu osiągnięcia tego. Jeśli można skorzystać z bibliotek 3rd party może chcesz sprawdzić biblioteki Apache Commons Lang który zapewnia klasę ArrayUtils z metody konwersji:

Integer[] toObject(int[] array)

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

Zgadłem już, ale dziękuję za potwierdzenie i skierowanie mnie na Apache Commons! – k13n

0

jeszcze alternatywnym do pisania własnych matcher byłoby użyć jednego z biblioteki matcherów, na przykład conmatch.

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

Sądzę, że są już dostępne inne Matchery na github.

Powiązane problemy