سؤال

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

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

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

وأنا لا أعتقد بالضرورة أن الأمور منصة، ولكن في حالة أي شخص لديه اهتمامات محددة للتنفيذ، بيئتي تبدو كما يلي:

ويندوز 7 (التنمية) / ويندوز سيرفر 2008 R2 (سيرفر) البصرية ستوديو 2008 فريق Edition (C #) مايكروسوفت SQL سيرفر 2008 ستاندرد (التنمية / الخادم)

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

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

المحلول

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

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

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

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

نصائح أخرى

ويمكنك استخدام SQL خادم اكسبرس (وأنا لقد فعلت ذلك مع عام 2005، ولكن لم يحاكم مع عام 2008) لانشاء قواعد البيانات "اختبار سطح السفينة" التي يتم تخزينها كملفات. هذه يمكن أن يتم إيداعه إلى عنصر تحكم مصدر، ثم الطبقات اختبار مساعد (أ) ونسخها إلى المجلدات المؤقتة، (ب) إرسال تمكينها، و (ج) الاتصال بهم. لاستعادة الحالة الأصلية، وحذف نسخة مؤقتة وتكرار ج.

هذا هو الألم ضخمة. إذا يمكنك الحصول عليه مع المعاملات (كما اقترح duffymo) كنت اذهب مع ذلك. نقاط الألم مع المعاملات المعاملات المتداخلة وزعت منها - احترس من تلك الموجودة في التعليمات البرمجية

.

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

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

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

وكما ترون، ومستودع، مثل بقية من التعليمات البرمجية الخاصة بك، يجب اتباع Reposibility مبدأ واحد. في الأساس respoitory الخاص لديها واحد فقط وreposibility واحد وهذا هو التوسط المخاوف نموذج المجال API لطبقة الوصول إلى البيانات technoloy الأساسية (عادة ADO.NET لكن يمكن أن يكون إطار الكيان أو L2S أو أيا كان). الذهاب مع مثال على المكالمات ADO.Net، يجب أن المخزون الخاص بك لا تأخذ على مسؤوليتها كونها مصنع للطبقة البيانات وبدلا من ذلك يجب اتخاذ الاعتماد على متعاون من واجهات البيانات ADO.Net (على وجه التحديد IDbConnection / IDbCommand / IDbParameter إلخ). ببساطة اتخاذ IDbConnection كمعلمة منشئ ويطلق عليه اليوم. هذا يعني أنه يمكنك كتابة وحدة الاختبارات مستودع ضد الواجهات ويسخر العرض (أو مزيفة أو بذرة أو ما تحتاج إليه) والتأكد من أن الأساليب المطلوبة، في النظام، مع المدخلات المتوقعة مصنوعة. تذهب للتحقق من بلدي بلوق MS حول هذا الموضوع المحدد -> <وأ href = "http://blogs.msdn.com/b/schlepticons/archive/2010/07/20/unit-testing-repositories-a-rebuttal.aspx "يختلط =" noreferrer نوفولو "> http://blogs.msdn.com/b/schlepticons/archive/2010/07/20/unit-testing-repositories-a-rebuttal.aspx

وHopfully هذا يساعدك من ارتكاب خطأ في الاختبار وتصميم في المستقبل.

وراجع للشغل: إذا كنت ترغب في وحدة اختبار قاعدة البيانات التي يمكن. مجرد استخدام Visual Studio الاختبارات قاعدة البيانات. المدمج INTO مقابل وكانت موجودة منذ VS2005. هذا ليس شيئا جديدا. ولكني في حاجة إلى الحذر لك، فإنها تحتاج إلى أن تكون وحدة الاختبارات منفصلة تماما.

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

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