إنشاء وظيفة رسم الخرائط من خلال TDD: الكثير من الوقت الذي يقضيه في الكتابة؟

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

  •  21-09-2019
  •  | 
  •  

سؤال

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

public class FooBarMapper
{
    public Foo MapToFoo(Bar bar)
    {
        return new Foo
        {
            Id = bar.Id,
            Name = bar.Name,
            FooYuk = bar.Beverage,
            /* ... */
        };
    }
}

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

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

المحلول

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

إذا كتبت عقارًا له آثار جانبية (أشك في أنك ستفعل) ، من ثم يمكنك إضافة اختبار الوحدة إليه. كما يشير Duffymo ، إذا كانت خصائصك مغطاة باختبار وظيفي ، فلا يجب أن تكون هناك حاجة لاختبارات الوحدة ، حيث لا توجد تخصيص من الوظائف التي تحددها مع اختبار الوحدة ، بخلاف GET/SET التافهة.

نصائح أخرى

ربما هذا هو ما اللياقة ولد ل.

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

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

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