بسيطة وموثوقة في قاعدة بيانات الذاكرة لاختبارات تكامل Java السريعة بدعم من JPA

StackOverflow https://stackoverflow.com/questions/3444265

سؤال

سيتم تشغيل اختبارات التكامل الخاصة بي بشكل أسرع بكثير إذا استخدمت database في الذاكرة بدلاً من postgresql. أستخدم JPA (Hibernate) وأحتاج إلى database داخل الذاكرة سيكون من السهل التبديل إلى استخدام JPA وسهل الإعداد والموثوقة. يحتاج إلى دعم JPA و Hibernate (أو VICE VERSE إن شئت) على نطاق واسع لأنه ليس لدي رغبة في تبني رمز الوصول إلى البيانات الخاص بي للاختبارات.

ما هي قاعدة البيانات هي الخيار الأفضل المتطلبات المذكورة أعلاه؟

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

المحلول

ل اختبار التكامل, ، أنا الآن استخدم H2 (من المؤلف الأصلي لـ HSQLDB) الذي أفضله على HSQLDB. أنه أسرع (وأريد أن تكون اختباراتي في أسرع وقت ممكن) ، لديها بعض الميزات الرائعة مثل التوافق MODE ، فريق DEV يستجيب للغاية (بينما ظل HSQLDB نائمًا لسنوات حتى وقت قريب جدًا).

نصائح أخرى

لقد كنت أستخدم HSQLDB في الذاكرة لاختبار التكامل jpa/hibernate الثبات في جافا. يبدأ بسرعة كبيرة ، لا يتطلب أي إعداد خاص.

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

يدعم ديربي وضع الذاكرة في هذه الأيام ، لم يعد تجريبيًا.

أنا استخدم ديربي. لسبب واحد ، يكون حوالي 3 أسطر أقل من الكود لكل اختبار وحدة حيث لا توجد حاجة لإغلاق بعد الاختبار. ومع ذلك ، تحتاج إلى استخدام تطبيق JPA الذي يمكن أن يسقط وإنشاء جداول مثل Eclipselink.

يمكن لـ Derby أيضًا تهيئة قاعدة بيانات جديدة في الذاكرة من ملف حتى تتمكن من الحصول على قاعدة بيانات مرجعية والعودة إليها في أي وقت.

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

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