هل من الممكن إنشاء حالات ومجموعات اختبار JUnit برمجياً؟

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

سؤال

لا بد لي من كتابة مجموعة اختبار كبيرة جدًا لمجموعة معقدة من قواعد العمل التي يتم التقاطها حاليًا في عدة أشكال جدولية (على سبيل المثال، إذا كانت المعلمات X Y Z هي كذا وكذا، فيجب أن تكون القيمة بين V1 وV2).كل قاعدة لها اسم ودلالات خاصة بها.

هدفي النهائي هو الحصول على مجموعة اختبار، منظمة في مجموعات اختبار فرعية، مع حالة اختبار لكل قاعدة.

أحد الخيارات هو ترميز كل هذه القواعد كاختبارات.وهذا أمر قبيح، ويستغرق وقتًا طويلاً، وغير مرن.

والطريقة الأخرى هي كتابة برنامج Python النصي الذي يقرأ ملفات القاعدة وينشئ فئات Java باستخدام اختبارات الوحدة.أفضل تجنب هذا إذا استطعت.الاختلاف الآخر هو استخدام Jython.

من الناحية المثالية، ومع ذلك، أرغب في الحصول على مجموعة اختبار يمكنها قراءة الملفات، ومن ثم تحديد المجموعات الفرعية والاختبارات داخلها.يمكن تهيئة كل من هذه الاختبارات بقيم معينة مأخوذة من ملفات الجدول، وتشغيل نقاط إدخال ثابتة في نظامنا، ثم استدعاء بعض وظائف التحقق من الصحة على النتائج بناءً على القيمة المتوقعة.

هل هناك طريقة معقولة لتحقيق ذلك باستخدام Java فقط؟

تحديث:ربما قمت بتبسيط نوع القواعد لدينا إلى حد ما.بعضها جدولي بالفعل (نمط Excel)، والبعض الآخر أكثر غموضًا.لكن يبقى السؤال العام لأنني ربما لست أول شخص يعاني من هذه المشكلة.

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

المحلول

ضمن JUnit 4 سوف ترغب في إلقاء نظرة على عداء المعلمة.تم إنشاؤه للغرض الذي تصفه (الاختبارات المستندة إلى البيانات).ومع ذلك، لن يتم تنظيمهم في أجنحة.

في Junit 3، يمكنك إنشاء TestSuites والاختبارات برمجيًا.الجواب في وصفات جونيت, ، والذي يمكنني توسيعه إذا كنت في حاجة إليه (تذكر أن JUnit 4 يمكنه إجراء اختبارات Junit 3).

نصائح أخرى

هل تعتبر استخدام تناسب للحصول على ذلك؟

ويبدو أنك قد الجداول جاهزة بالفعل، و "قواعد العمل" يبدو وكأنه "رجال الأعمال إرسال لهم باستخدام اكسل".

وFIT هو نظام لفحص الاختبارات على أساس الجداول مع الإدخال-> تعيينات الناتج المتوقع، ومكتبة جافا مفتوحة المصدر لتشغيل تلك الاختبارات هو متاح.

لقد جربنا FIT وقررنا الذهاب معه كونكورديون.المزايا الرئيسية لهذه المكتبة هي:

  • يمكن التحقق من الاختبارات جنبًا إلى جنب مع قاعدة التعليمات البرمجية (في مستودع Subversion، على سبيل المثال)
  • يتم تنفيذها بواسطة عداء JUnit القياسي

ولقد كتبت شيئا من هذا القبيل للغاية باستخدام أداة JUnit. كان عدد كبير من حالات الاختبار (30 صفحة) في ملف XML. وبدلا من محاولة توليد اختبارات مختلفة، وفعلت كل ذلك في اختبار واحد، والتي عملت على ما يرام.

وبلدي اختبار بدا شيء من هذا القبيل:

void setup() { 
  cases = read in the xml file
}

void test_fn_works() {
  for case in cases {
    assert(case.expected_result, fn(case.inputs), 
        'Case ' + case.inputs + ' should yield ' + case.expected_result);

  }
}

ومع روبي، فعلت بالضبط ما كنت الاختبارات توليد saying-- على الطاير. القيام بذلك في جاوة، رغم ذلك، هو مجمع، وأنا لا أعتقد أنه يستحق ذلك لأنه ليس هناك آخر، نهجا معقولا تماما.

وآمل أن يساعد هذا.

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