سؤال

ما هو أفضل الممارسات لاختبار API الذي يعتمد على البيانات من قاعدة البيانات؟ ما هي القضايا ولست بحاجة لمشاهدة لفي بيئة "التكامل المستمر" التي تدير الاختبارات وحدة كجزء من عملية الإنشاء؟ أعني هل نشر قاعدة البيانات الخاصة بك كجزء من الكتابات بناء (يمكن تشغيل المثبت الخاص بك) أو يجب أن أذهب للبيانات ضمنية [استخدام مدفوعة MSTest بيانات الاختبارات وحدة مع XML]؟

وأنا أفهم أن يسخر طبقة البيانات لطبقة الأعمال المنطق ولكن ماذا لو كان لي مشاكل في البيانات SQL في بلدي DAL؟ أنا بحاجة لضرب قاعدة البيانات، أليس كذلك؟

وحسنا ... هذا هو سيل من الأسئلة:) ... أفكار؟

لا يوجد حل صحيح

نصائح أخرى

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

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

وكما ذكر، واستخدام السخرية لمحاكاة DB يدعو في وحدة الاختبارات إلا إذا كنت تريد العبث الاختبارات والبيانات إلى ما لا نهاية. اختبار عبارات SQL يعني أكثر من . تشغيل التي تفصل من وحدة الاختبارات، هم 2 الوحوش المختلفة.

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

ويمكنك مسح وتجميع قاعدة البيانات مع الأدوات ( DBUnit و <لأ href = "HTTP: / /dbunit-net.sourceforge.net "يختلط =" نوفولو noreferrer "> DBUnit.NET أو غيرها) أو مجرد جعل المرافق طبقات الخاصة بك أن تفعل الشيء نفسه.

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

وكان شيء واحد فعلته إنشاء الطرق الثابتة التي عاد بيانات الاختبار من حالة معروفة. ثم أود أن استخدام "وهمية" DAL لإعادة هذه البيانات كما لو كنت فعلا استدعاء قاعدة البيانات. أما بالنسبة لاختبار SQL / الإجراء المخزن، وأنا اختباره باستخدام Studio إدارة SQL. YMMV!

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