كيف يمكنك تنظيم اختبارات NUnit الخاصة بك في مشروع كبير؟

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

  •  05-07-2019
  •  | 
  •  

سؤال

أنا مهتم بمعرفة ما إذا كان بإمكاني تحسين الطريقة التي نستخدم بها NUnit في حل Visual Studio الذي يحتوي على أكثر من 30 مشروعًا.

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

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

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

المحلول

لإجابة على سؤالك الأول:

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

للرد على الثانية:

ويمكنك استخدام فئات و في [Explicit] و <لأ href = "http://www.nunit.org/ index.php؟ p = تجاهل وص = 2.4.8 "يختلط =" noreferrer "> [Ignore] السمة أن أقول NUnit الذي يختبر لتشغيل، والذي يختبر لديك لأقول ذلك لتشغيل قبل أنها ستفعل ذلك. قد ترغب أيضا أن ننظر إلى [Platform] أو بعض الصفات الأخرى، اعتمادا على ما بالضبط الاحتياجات الخاصة بك على 'بيئة' هي.

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

نصائح أخرى

بالنسبة لحالتك، أود أن أضعها في عدة خيارات:

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

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

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

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

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

وإستراتيجيتي هو أن يكون مشروع اختبار وحدة واحدة لكل مشروع في الحل الذي هو عمل أو إطار ذات الصلة. وحدة الاختبارات هي غير متوافقة مع اختبار الجوانب UI مشروع وعموما أنا أترك هذا لاختبار scipted. تم بناء المشروع باستخدام ملقم والتكامل المستمر (CI) التي أطلقت في كل مرة مطور يرتكب قطعة من العمل. كما يعمل خادم CI كل اختبار وحدة، وكذلك وحدة توليد إحصاءات تغطية الاختبار. تستخدم بيئة CI MSBuild بناء الحل.

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

وكما جانبا، نجد TestDriven.Net ليكون VisualStudio ممتاز الإضافية في الواجهة الأمامية للNUnit ، مجانا لاستخدام المصدر المفتوح / طالب وطالبة.

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