سؤال

وهكذا لدي الدرجة التي تبدو شيء كما يلي:

public class MyClass
{

    DatabaseDependency _depend;

    public MyClass(DatabaseDependency depend)
    {
        _depend = depend;
    }

    public string DoSomething(DBParameter database)
    {
        var result = _depend.GetResults(database, ...);
        string response = String.Empty;        

        // some logic to process the result 

        return response;
    }

}

وأين DBParameter هي فئة قيمة البسيطة التي تحتوي على خصائص مثل خادم، DBNAME، DBTYPE، وما إلى ذلك.

والآن، أريد أن أضيف الزائد لتنفيذ DoSomething بحيث يقبل سلسلة اتصال بدلا من المعلمة DBParameter (نفترض أن DatabaseDependency لديها بالفعل الزائد GetResults الذي يقبل سلسلة اتصال).

وسؤالي: لدي العديد من وحدة الاختبارات التي تصف مختلف مسارات منطقية استخدامها لمعالجة نتيجة من DatabaseDependency.GetResults. عندما أضيف الزائد لتنفيذ DoSomething، وأود أن ريفاكتور أساسا التعليمات البرمجية بحيث هذا المنطق يتم استخدامها من قبل كل من الزائدة (أي ربما نقله إلى الأسلوب الخاص). ما هو الطريق الصحيح للذهاب حول وحدة اختبار هذا؟ هل أنا بحاجة إلى أن يكون تماما كما العديد من وحدة الاختبارات للتحقق من جميع مسارات منطقية للالزائد جديد أنا وأضاف

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

المحلول

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

ولكن هذا ينهار إذا كنت ريفاكتور الطرق طاقتها الكامنة مثل أن أي وفد تأخذ مكان. في هذا السيناريو كنت تشعر بمزيد من الثقة تكرار كل الاختبارات لكل من الأساليب.

وأعتقد أن الطريق الأول هو الأكثر واقعية. ومع ذلك انها فكرة جيدة لتشغيل تحليل مدونة التغطية من حين الى حين، والتي من شأنها أن تشير في وقت لاحق إذا كانت هناك حاجة لمزيد من الفحوص.

نصائح أخرى

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

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

وبمجرد أن يتم التحقق من قبل واحد أو أكثر من الاختبارات وحدة، لا تحتاج إلى اختبار هذه الطريقة إلى أبعد من ذلك، لأنه الآن لديك <م> ثبت أن طريقة استدعاء الأسلوب الآخر بشكل صحيح، ويمكنك تركيز الجهود الاختبار الخاص بك على هذه الطريقة.

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

وبعد ذلك كان لديك بضع اختبارات بسيطة لكل مسار بدء overlaoded.

ويعتمد إذا كنت تفعل الصندوق الأسود أو اختبار الصندوق الأبيض وأيضا إذا كنت تستخدم تطبيق كلا الإصدارين من طريقة.

إذا كنت على افتراض أن كنت مجرد اختبار التنفيذ، ثم ببساطة اختبار نسخة 'الرئيسي' ستكون على ما يرام. إذا كنت تفكر على غرار الكاتب الاختبار الذي يعرف فقط حول API عرض (javadocs أو ما شابه) ثم تحتاج إلى اختبار تستند فقط على API، وهو ما يعني ضمنا اختبار كل من الأساليب تماما.

إذا كنت تطبيق يستخدم أسلوب واحد فقط، ثم استنكر البعض وخلق نسخة تجريبية الشرطية التي فشل عندما طريقة مستنكر لا يزال موجودا في بعض نسخة مسبقا. IE: فرض أن تتم إزالة طريقة إهمال في بعض نقطة

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