لماذا لا يكون JUNIT4 يؤكد. assertarrayequals () لـ Double [] s؟
سؤال
يبدو أن هناك Assert.assertArrayEquals()
طرق في JUNIT4 لجميع البدائية بخلاف المزدوج ، على سبيل المثال
Assert.assertArrayEquals(int[] expected, int[] actual)
و
Assert.assertArrayEquals(char[] expected, char[] actual)
لكن لا
Assert.assertArrayEquals(double[] expected, double[] actual, double eps)
أو
Assert.assertArrayEquals(double[] expected, double[] actual, double[] eps)
(الأخير لحساب النطاقات المتغيرة من الزوجي). هل هناك سبب أساسي لعدم كتابة مثل هذه الوظيفة؟
المحلول
لديها مثل هذه الطريقة (في 4.7) ، على الرغم من أنها غير موثقة على جافادوك على الإنترنت هنا. لقد كانت بالتأكيد إشرافًا في جافادوك/الإصدار ، لكنها موجودة الآن.
نصائح أخرى
يبدو أن الطريقة تمت إضافتها في Junit 4.6 ، ولكن لسبب ما مفقود في 4.5 والإصدارات السابقة. لا أتوقع أي مشاكل في ترقية إلى إصدار جونيت الأحدث.
وفقًا لقاعدة بيانات Junit Bug ، فهي ""أعمل عليه"استنادًا إلى إجابات أخرى ، يبدو أن قاعدة بيانات الأخطاء ليست متزامنة تمامًا مع الواقع.
فقط استخدم:
AssertTrue(**message**, Arrays.equals(**expected**,**result**)
قد تحتاج إلى هذا لتجول القيم الناتجة الخاصة بك للاختبار مقابل المتوقع:
public double roundTo2Decimals(double val) {
DecimalFormat df2 = new DecimalFormat("###.####");
return Double.valueOf(df2.format(val));
}
يرى جافدوك لمزيد من المعلومات