سؤال

ما هي أفضل اصطلاحات تسمية مجموعات الاختبار في .NET (أو أي لغة أو نظام أساسي آخر)؟

ما أقسمه بشكل أساسي هو هذه الخيارات (يرجى تقديم خيارات أخرى!):

  • موقع الشركة - المشروع
  • الشركة.الموقع.الاختبارات

أو

  • موقع الشركة
  • اختبارات موقع الشركة

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

ربما ينبغي أن يكون: الاختبارات.الشركة.الموقع و الاختبارات.الشركة.موقع الويب.الضوابط, ، وما إلى ذلك وهلم جرا.

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

المحلول

سأذهب مع

* Company.Website - the project
* Company.Website.Tests

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

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

-مجلد الكود

  • موقع الشركة

-مجلد الاختبارات

  • الشركة.الموقع.الاختبارات

نصائح أخرى

أنا شخصيا سأذهب مع

الشركة.الاختبارات.الموقع

بهذه الطريقة يكون لديك مساحة اسم اختبارات مشتركة ومشاريع بداخلها، تتبع نفس بنية المشروع الفعلي.

لدي بالفعل جذر موازي بديل.

الاختبارات.الشركة.الموقع

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

أنا معجب كبير بتنظيم مساحة اسم الاختبار مثل هذا:

Company.Tests.Website.xxx

الشركة.الاختبارات.موقع الويب.الضوابط

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

أنا أيضًا أفضل "الاختبارات" التي تبدأ بالاسم الفعلي للتجميع بحيث يكون من السهل رؤية جميع مجموعات اختبار الوحدة الخاصة بي مدرجة أبجديًا معًا عندما أقوم بتحديدها بشكل جماعي لسحبها إلى NUNit أو أي أداة اختبار تستخدمها.

لذا، إذا كان موقع الويب هو اسم الحل (والتجميعات) الخاص بي، فأنا أقترح -

الاختبارات.Website.dll لتتماشى مع تجميع التعليمات البرمجية الفعلي موقع الويب.Dll

نحن نتبع نهجًا مدمجًا:

Company.Namespace.Test
Company.Namespace.Data.Test

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

يمكننا أيضًا اختبار أجزاء مميزة من التعليمات البرمجية بينما نقوم بتعزيزها وتطويرها.

قد يبدو الأمر غريبًا بعض الشيء في البداية، ولكن على المدى الطويل نجح الأمر جيدًا بالنسبة لنا.

عادةً ما أقوم بتسمية المشاريع الاختبارية اختبارات المشروع للإيجاز في Solution Explorer، وأنا استخدم الشركة.مساحة الاسم.الاختبارات لمساحات الأسماء.

أفضّل الذهاب مع:

الشركة.الموقع.الاختبارات

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

أفضّل Company.Website.Spec وعادةً ما يكون لدي مشروع اختبار واحد لكل حل

مع بدء MVC في أن يصبح حقيقة واقعة في عالم تطوير الويب .net، سأبدأ في التفكير على هذا المنوال.تذكر أن M وV وC هي مكونات متميزة، لذلك:

  • Company.Namespace.Website
  • Company.Namespace.Website.Core
  • Company.Namspance.Website.Core.Tests
  • Company.Namespace.Website.Model
  • Company.Namespace.Website.Model.Tests

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

قد يكون هذا مبالغة بالنسبة لبعض الناس، لكنني أجد أنه يسمح لي بفصل المخاوف بسهولة إلى حد ما.

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