فهم القيود وحدة اختبار وNUnit المساعدين في بناء الجملة

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

  •  03-07-2019
  •  | 
  •  

سؤال

وأنا وزميل بدأت مشروع جديد ومحاولة الاستفادة الكاملة من TDD. نحن لا نزال في معرفة كل المفاهيم حول اختبار وحدة ومستندة حتى الآن منها في المقام الأول على أمثلة أخرى.

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

Assert.That(product.IsValid(), Is.False);

للي هذا يجعل المعنى الكامل، ونحن نقول إننا نتوقع أن قيمة product.IsValid() أن false. زميلي من ناحية أخرى يفضل لنا ببساطة إرسال:

Assert.That(!product.IsValid());

ويقول له هذا أكثر منطقية وانه لا يمكن قراءتها أسهل.

وحتى الآن الشيء الوحيد الذي يمكن أن نتفق عليه هو أن أنت من المحتمل أن الحصول على إخراج أكثر فائدة عند الاختبار فشل من السابق، ولكن أعتقد أنه يجب أن يكون هناك تفسير أفضل. لقد بحثت عن بعض المعلومات عن المساعدين جملة ( http://nunit.com/blogs/؟ ع = 44 ) وكانت منطقية، ولكن أنا لا أفهم تماما مفهوم القيود غير أنها 'تشعر' الحق.

وأنا أتساءل عما إذا كان شخص ما يمكن أن يفسر لماذا نستخدم مفهوم ضيق، والسبب أنها تحسن الأمثلة وحدة اختبار أعلاه؟

وشكرا.

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

المحلول

وأعتقد أنه في الغالب علاقة مع القراءة باللغة الإنجليزية نقية من بيان.

ويقرأ الأول

<اقتباس فقرة>   

وتأكيد أن المنتج هو صحيح غير صحيح

ووالثاني يقرأ

<اقتباس فقرة>   

والتأكيد على أن ليس المنتج صالحا

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

product.IsValid().IsFalse();

نصائح أخرى

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

Assert.IsFalse(product.IsValid());

إذا كنت تستطيع ان تقنع لي ان بناء الجملة Assert.That لديه مصلحة موضوعية على ما سبق، وسأكون مهتما جدا :) ويجوز قوة جيدا عادلة من هذه العادة، ولكن أستطيع أن أقرأ بسهولة جدا "أي نوع من التأكيد نحن صنع؟ الآن ما نحن مؤكدا أنه شيء؟ " النمط.

والأمر كله السكر. داخليا يتم تحويلها إلى القيود.

ومن عملي وحدة اختبار، ص 37:

و"NUnit 2.4 قدم نمط جديد من التأكيدات التي هي أقل قليلا الإجرائية والسماح لكائن أكثر توجها نحو تنفيذ الأساسي. ... على سبيل المثال:

Assert.That(actual, Is.EqualTo(expected));

ويحول إلى:

Assert.That(actual, new EqualConstraint(expected));"

وعن طريق القيود كما يسمح لك أن ترث من القيد وإنشاء القيد المخصص الخاص بك (ق) مع الحفاظ على تركيب ثابت.

وأنا لا أحب Assert.That، وتحديدا حقيقة أن السيناريو الأكثر شيوعا في (مقارنة كائنين "المساواة) هو أسوأ ملموس من" جملة الكلاسيكية Assert.AreEqual ().

وعلى صعيد آخر، وأنا أحب السوبر ملحقات MSpec NUnit. أنصحك التحقق منها (أو إلقاء نظرة على ملحقات SpecUnit، أو ملحقات NBehave، أو N <م> تتصرف المواصفات * ملحقات وحدة، وأعتقد أنهم جميعا نفس).

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