2012-05-16 13 views
11

İki çift diziyi karşılaştırmak istiyorum. vanilya JUnit kullanarak, Yapabileceğim:Hamcrest'i, her iki öğeden oluşan bir öğenin, başka bir dizideki her öğeye "yakın" olup olmadığını kontrol etmek için nasıl kullanabilirim?

double[] a = new double[]{1.0, 2.0, 3.0}; 
double[] b = new double[]{1.0, 2.0, 3.0}; 
assertEquals(a, b, 1e-10); 
Ben tercihen özel matchers (mümkünse) yaratmadan, bu kullanarak hamcrest nasıl bilmek istiyorum

. Bir dizideki her öğe için "yakın" eşleştirmeyi kullanmaya benzer bir şey.

public static Matcher<Double[]> arrayCloseTo(double[] array, double error) { 
    List<Matcher<? super Double>> matchers = new ArrayList<Matcher<? super Double>>(); 
    for (double d : array) 
     matchers.add(closeTo(d, error)); 
    return arrayContaining(matchers); 
} 

Siz de ilkel bir dizi yapabilirsiniz, ama bunun için özel bir eşleyici gerekir: Bir Double[] için a değiştirirseniz

cevap

9

o zaman bu yardımcı yöntemiyle assertThat(a, arrayCloseTo(b, .2)); yapabilirsiniz.

İlgili konular