2012-05-16 6 views
11

मैं युगल के दो सरणी की तुलना करना चाहता हूं। वेनिला JUnit का उपयोग करना, मैं कर सकते हैं:मैं हैमक्रिस्ट का उपयोग यह जांचने के लिए कैसे कर सकता हूं कि युगल की सरणी में प्रत्येक तत्व किसी अन्य सरणी में प्रत्येक तत्व के लिए "बंद" है या नहीं?

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); 

मुझे पता है कि इस Hamcrest का उपयोग कर कैसे करना है, खासकर कस्टम matchers (यदि संभव हो) बनाने के बिना चाहते हैं। सरणी में प्रत्येक तत्व के लिए "करीबी" मैचर का उपयोग करने के समान कुछ।

उत्तर

9

आप एक Double[] करने के लिए a को बदलते हैं तो आप इस सहायक विधि के साथ assertThat(a, arrayCloseTo(b, .2)); कर सकते हैं:

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); 
} 

साथ ही आप एक आदिम सरणी के साथ यह कर सकते हैं, लेकिन आप उस के लिए एक कस्टम मिलान की आवश्यकता होगी।

संबंधित मुद्दे

 संबंधित मुद्दे