سؤال

ويمكنني استخدام مولد رمز (CodeSmith مع قالب .NetTiers) لتوليد كل رمز DAL. وأنا أكتب وحدة الاختبارات لقانون بلدي (طبقة رجال الأعمال)، وهذه الاختبارات أصبحت بطيئة جدا لتشغيل. والمشكلة هي أن لكل اختبار، وإعادة تعيين قاعدة البيانات لديك حالة نظيفة. أيضا، كما أفعل الكثير من التجارب، يبدو أن الكمون من عمليات قاعدة البيانات يؤدي إلى حدوث تأخير قليلا جميلة.

يتم تنفيذ

وعمليات جميع DB من خلال فئة DataRepository الذي تم إنشاؤه بواسطة .NetTiers. هل تعرف ما إذا كان هناك وسيلة لتوليد (أو رمز نفسي) على بعد DataRepository همية من شأنها أن استخدام التخزين في الذاكرة بدلا من استخدام قاعدة البيانات؟

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

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

المحلول

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

وهناك العديد من المكتبات الحرة والمفتوحة المصدر التي يمكن استخدامها لمساعدتك. منذ كنت في C #، واحدة من المكتبات الجديدة والقادمة وحتى DI هو Ninject . هناك العديد من الآخرين أيضا. تحقق من هذه ويكيبيديا المقالة للآخرين ووصف مستوى عال.

نصائح أخرى

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

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

وهناك العديد من الأطر ساخرة التي يمكنك استخدامها مثل الكركدن همية، موك، typemock على سبيل المثال لا الحصر. (في مشروعي، وأنا استخدم الكركدن وهمية للسخرية من طبقة DAL واختبار وحدة طبقة الأعمال في عزل)

وحرشة

وبعض الاختبارات وحدتنا استخدام البيانات جلب من لXML التي تم إنشاؤها من قاعدة بيانات للسخرية وصول ديسيبل. يتم استبدال الطبقات دال بأخرى وهمية لأنها كلها تخزينها في حاوية DI.

والجيل من أكس هو الرمز المخصص، إذا وجدت حلا مفتوحة المصدر لهذا فأنا سعيد لسماع ذلك.

وتحرير بعد إجابة ستيفان: أذكر فريق آخر باستخدام SQL CE للحصول على قاعدة بيانات الاختبار

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