سؤال

وأنا أقتبس هذا المنصب من exubero لدخول . أعتقد أن هذا الموضوع يستفيد الجميع من يفعل وحدة الاختبار:

وهناك عدد كبير من الطرق المختلفة بدءا ASSERT المحددة في الصف تأكيد أداة JUnit ل. كل من هذه الأساليب لديها حجج ودلالات مختلفة قليلا عن ما هي عليه مؤكدا.

وفيما يلي يظهر بعض الاستخدامات غير النظامية من assertTrue:

assertTrue("Objects must be the same", expected == actual);
assertTrue("Objects must be equal", expected.equals(actual));
assertTrue("Object must be null", actual == null);
assertTrue("Object must not be null", actual != null);
وأشار

وبعض الخبراء وحدة الاختبار إلى أن رمز أعلاه يمكن أن تكون مكتوبة بشكل أفضل على النحو التالي:

assertSame("Objects must be the same", expected, actual);
assertEquals("Objects must be equal", expected, actual);
assertNull("Object must be null", actual);
assertNotNull("Object must not be null", actual);

واحد من الاستفادة من استخدام "assertXXX () 'مناسبا سيزيد من سهولة قراءة اختبار وحدة. يمكن لأي شخص أن نشير إلى ما فائدة أخرى من استخدام "assertXXX () 'مناسبة؟

هل كانت مفيدة؟

المحلول

وأنا لست مطور جافا وأنا لا أعرف ما مخرجات أداة JUnit عندما فشل التوكيد. العديد من الأطر وحدة اختبار أنني أستعمل إخراج أفضل المعلومات خطأ عند استخدام شيء من هذا القبيل assertEquals.

واسمحوا لي أن تظهر لك مثالا ما أتحدث عنه:

assertTrue("Objects must be equal", "One" == "Two");
assertEquals("Objects must be equal", "One", "Two");

في الحالة الأولى يمكن أن يكون الناتج خطأ مثل هذا:

خطأ: صحيح المتوقعة والفعلية كاذبة

والناتج عن الحالة الثانية:

خطأ: Exected "واحد" الفعلية كان "اثنان"

وكما ترون الحالة الثانية تعطي أفضل المعلومات أكثر وضوحا.

نصائح أخرى

وبالإضافة إلى ماVadim دايد أعلاه، باستخدام ASSERT السليم قد وقاية من الحشرات التي أنشأتها قطع لصق نسخة من الاختبارات.

وكمثال على ذلك

assertTrue("Objects must not be the same", expected != actual);

هل ثم نسخها وتعديلها ل

assertTrue("Objects must not be the same", newobject == actual);

وعندما يتغير رمز وهذا الاختبار فشلت وتعليق تنطلي المطور المقبل إلى "إصلاح" التعليمات البرمجية في الطريقة التي يقدم علة جديد.

إذا كان قطع لصق نسخة رمز شيئا من هذا القبيل:

assertFalse("Objects must be the same", newobject == actual);

ووتضليل الانسجام من التعليق، وتأكيد وحالة الاختبار قد يكون أكثر وضوحا.

ونعم، لقد رأيت هذا يحدث.

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