سؤال

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

أود أن أذكر أيضا أنني ربطت نفسي tsql ضمن أنا فقط منذ أي وقت مضى أن تكون باستخدام منصة مايكروسوفت.

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

المحلول

وبالنظر إلى أن تصرح:

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

وأود أن أذكر أيضا أنني ربطت   نفسي TSQL منذ أنا فقط من أي وقت مضى   ستكون باستخدام مايكروسوفت   المنصة.

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

وهناك عدد قليل من gotchas، يتم اعتماد إجراءات لا المخزنة، تحتاج إلى أن تترجم وأنواع بيانات معينة لها حدود ضيقة (لا سيما VARCHAR الذي يمكن أن تذهب فقط إلى 4000 حرفا) بعض أنواع البيانات LINQ إلى SQL أيضا غير معتمد بشكل صحيح.

وعلى الرغم من ذلك لقد استخدمت SQLSERVER Edition ضغط باعتبارها إسقاط بالكامل تقريبا بديل لقاعدة بيانات SQL Server المناسبة مع نتائج جيدة.

نصائح أخرى

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

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

وهذا ميزة كبيرة أخرى هي أن لم يكن لديك ما يدعو للقلق الإعداد أو هدم. انها غير منتجة لا يصدق أن يكون لديك الاختيار في تفشل لأن المطور لكسر قاعدة بيانات ديف الخاص بك؛ -)

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

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

وسمعت أن هناك برنامج لتركيب RAMDISK في ويندوز (لا تذكر رابط، آسف).

ويمكن أن تكون مثيرة للاهتمام لإنشاء قواعد بيانات الاختبار على ذلك.

هو SQL Server حقا عنق الزجاجة الخاصة بك وحدة الاختبارات ؟

أعني:

  1. هل لمحة الخاص بك وحدة الاختبارات (مع شيء مثل منشئ ملفات التعريف SQL).هم كل بطيئة ؟ هي قليلة بطيئة ؟ لماذا ؟
  2. هي وحدة الاختبارات تفعل أكثر من اللازم ؟ هو الإعداد teardown رمز ثقيلة جدا ؟
  3. إذا SQL هو عنق الزجاجة ، هل يعتبر ساخرا إطار, لذا أنت تسخر كل ما تبذلونه من مكالمات SQL.

لدي تحديات مماثلة مع "أوراكل" و فعلنا ما يلي:

  • على يقين من أن لدينا الحقيقي وحدة الاختبارات لم تلمس ديسيبل ، ولكن تستخدم يسخر الخدمات بدلا من ذلك

  • الموسومة DB الاختبارات اللازمة فعلا أوراكل مقابل الاختبارات التي يمكن أن تعمل ضد HSQLDB أو H2 أو أي دولة أخرى في قاعدة بيانات الذاكرة.حتى نتمكن من تشغيل كل منها على حدة.

  • مع الاختبارات التي تستخدم في الواقع أوراكل الميزات كنا العادي أوراكل سبيل المثال أن ركض على ذاكرة الوصول العشوائي القرص.

جعلت هذه الاختبارات كبيرة بشكل أسرع.

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