تحويل تطبيق اختبار المشروب المنزلي إلى إطار اختبار الوحدة القياسي

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

سؤال

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

لقد رأيت أن الإصدار التجريبي من VS 2008 يحتوي على فكرة "الاختبار العام" الذي قد يفعل ما أريد، ولكننا لسنا في وضع يسمح لنا بإنفاق الأموال على هذا الإصدار حاليًا.لقد بدأت مؤخرًا باستخدام إصدار VS 2008 Pro.

تتبع طرق الاختبار هذه نمطًا مألوفًا:

  • قم ببعض الإعداد للاختبار.
  • تنفيذ الاختبار.
  • إعادة تعيين للاختبار التالي.

يقوم كل واحد منهم بإرجاع منطقي (نجاح/فشل) ومرجع سلسلة لسبب الفشل، ويتم ملؤه في حالة الفشل.

على الجانب المشرق، على الأقل طرق الاختبار متسقة.

أنا جالس هنا الليلة أفكر في النهج الذي قد أتبعه صباح الغد لترحيل كل كود الاختبار هذا إلى إطار اختبار، وبصراحة، لست متحمسًا تمامًا لفكرة البحث في أكثر من 8 إلى 9 آلاف سطر من كود الاختبار يدويًا قم بالتحويل.

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

أي أفكار؟

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

المحلول

إذا كنت تستخدم NUnit (وهو ما يجب عليك استخدامه)، فستحتاج إلى إنشاء طريقة اختبار جديدة لكل طريقة من طرق الاختبار الحالية.تستخدم NUnit الانعكاس للاستعلام عن فئة الاختبار للطرق المميزة بالرمز [Test] السمة، وهي كيفية إنشاء قائمة الاختبارات التي تظهر في واجهة المستخدم، وتستخدم فئات الاختبار NUnit Assert طريقة للإشارة إلى ما إذا كانوا قد نجحوا أو فشلوا.

يبدو لي أنه إذا كانت طرق الاختبار الخاصة بك متسقة كما تقول، فإن جميع أساليب NUnit ستبدو كما يلي:

[Test]
public void MyTest()
{
   string msg;
   bool result = OldTestClass.MyTest(out msg);
   if (!result)
   {
      Console.WriteLine(msg);
   }
   Assert.AreEqual(result, true);

}

بمجرد أن تنجح في ذلك، فإن خطوتك التالية هي كتابة برنامج يستخدم الانعكاس للحصول على جميع أسماء طرق الاختبار في فئة الاختبار القديمة الخاصة بك وينتج ملف .cs يحتوي على طريقة NUnit لكل طريقة من طرق الاختبار الأصلية.

ربما يكون الأمر مزعجًا، لكنه ليس مؤلمًا للغاية.وسوف تحتاج فقط إلى القيام بذلك مرة واحدة.

نصائح أخرى

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

لم تذكر NUnit (التي أعتقد أن Microsoft اشترتها لعام 2008، لكن لا تلزمني بذلك).هل هناك سبب محدد لعدم استخدام NUnit في المقام الأول؟

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