سؤال

ونحن نعمل على مشروع هنا في Visual Studio 2008. نحن باستخدام المدمج في اختبار جناح قدمت معها (مساحة الاسم Microsoft.VisualStudio.TestTools.UnitTesting). كما تبين، أن الكثير لدينا الكدر، على قدر كبير من التعقيد (وبالتالي أخطاء) قد أنهى مشفرة إلى طبقة UI لدينا. بينما الاختبارات وحدتنا القيام بعمل لائق تغطية طبقة رجال الأعمال لدينا، طبقة UI لدينا هي مصدر دائم للتهيج. لكنا مثالي مثل لوحدة اختبار، كذلك. لا أحد يعرف من وسيلة جيدة "متوافق مع Microsoft" للقيام بذلك في الاستوديو المرئي؟ فإنه يعرض نوعا من الصراع على "مزيج" الأطر وحدة الاختبار مثل nUnitForms مع الاشياء مايكروسوفت؟ هل هناك أي الفخاخ الدب واضحة وأرجو أن تكون على علم مع أشكال وحدة الاختبار؟

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

المحلول

وأنت سوف تحتاج إلى إعادة واجهة المستخدم UI بحيث لا تحتاج إلى أي وحدة الاختبار. UI يجب أن يحتوي على حد أدنى أو أي منطق الأعمال. هناك العديد من الأنماط التي تتعامل مع هذه القضية. مارتن فاولر مادة جيدة للغاية أن يفسر الكثير عن هذه الأنماط: http://martinfowler.com/eaaDev/ uiArchs.html

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

ملحوظة: هناك أداة يمكن استخدامها لأتمتة اختبار UI. SilkTest يتبادر الى ذهني. ولكن أنا لم تستخدمها إذا أمكن ذلك.

نصائح أخرى

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

وأنا استخدم سلبية مشاهدة العمارة كما هو مفصل هنا http://martinfowler.com/eaaDev/PassiveScreen. أتش تي أم أل

ونقل في الأساس كل ما تبذلونه من التعليمات البرمجية في الأشكال إلى فئة منفصلة تسمى xxxUI. شكل ثم تنفذ واجهة IxxxUI وكشف أي شيء احتياجات الطبقة xxxUI. ربما يمكنك تبسيط الأمور وتجميع التعامل مع عدة عناصر تحكم في أسلوب واحد.

وتدفق ثم يذهب انقر فوق المستخدم على زر. ويدعو زر أسلوب على الطبقة UI المقابلة. تمرير أية معلمات الحاجة. طريقة UI الدرجة تعديل نموذج. ثم باستخدام واجهة بتحديث واجهة المستخدم.

لوحدة اختبار لديك اختبار أو فئات وهمية تنفيذ واجهات وتسجيل أسمائهم مع فئات UI. هل يمكن أن يكون هذه الفئات اختبار النار أي نوع من المدخلات وتستجيب وفقا لذلك. وعادة ما لدي قوائم تسلسل أن تفعل شيئا في ترتيب دقيق. (الحنفية A، فوق هذا، انتقل ذلك، ثم اكتب B، الخ).

وانه من السهل جدا لاختبار WinForms عناصر مع ApprovalTests (www.approvaltests.com أو اختبارات موافقة nuget) وأنها متوافقة مع MsTest وكذلك Nunit.

وهناك شريط فيديو هنا عن كيفية القيام بذلك: https://www.youtube.com/ مشاهدة؟ ت = hKeKBjoSfJ8

ولكن العملية بسيطة. 1) إنشاء النموذج الذي تريد اختباره في الدولة التي ترغب في ذلك التحقق منها. 2) دعوة WinFormApprovals.Verify (النموذج)

وApprovalTests يستخدم النموذج سيد ذهبية لالتقاط الشاشة النتيجة. إذا كنت ترغب في ذلك ببساطة إعادة تسمية الملف إلى .approved وسوف اختبار تمر.

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

تحقق من جيريمي D. ميلر WIP أنماط عرض صفحة ويكي للحصول على إعادة بيع ديون إلهام: )

وميلر يؤلف كتابا، ويبدو انها ستكون يجب أن يكون لهذا النوع من الشيء.

ولقد استعملت NUnitForms عندما يتعلق الأمر اختبار بلدي الضوابط UI الخاصة مع نتائج جيدة! وأنا أتفق مع الآخرين على إعادة بيع ديون إذا كنت تستخدم معيار (أو اختبارها بشكل جيد) الضوابط UI.

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

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

ويجب عليك استخدام Microsoft الأكواد UI لاختبار طبقة UI. وهذا ينطوي على الكتابة (أو تسجيل) الاختبارات التي تحاكي الإجراءات التي يمكن للمستخدم من شأنها أن تؤدي والكتابة ويؤكد تصريحات لضمان تحقيق الإخراج الصحيح.

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

وUI الأكواد تأتي مع بني في أحدث الإصدارات من Visual Studio بريميوم. أقترح عليك أن لا مجرد استخدام وظيفة قياسية، ولكن بدلا من تعلم كيفية كتابة الاختبارات نفسك هذا يمنحك مزيدا من المرونة.

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