لماذا لا يكون JUNIT4 يؤكد. assertarrayequals () لـ Double [] s؟

StackOverflow https://stackoverflow.com/questions/1591415

  •  22-09-2019
  •  | 
  •  

سؤال

يبدو أن هناك 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));
}

يرى جافدوك لمزيد من المعلومات

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top