اختبارات تكامل Spring.net + Nhibernate تنجح في حين لا ينبغي لها ذلك

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

سؤال

أنا أستخدم Spring.net مع NHiberante (HibernateTemplate) لتنفيذ DAO الخاص بي.

لدي أيضًا بعض اختبارات التكامل، والتي تمتد من 'AbstractTransactionalDbProviderSpringContextTests'.

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

على سبيل المثال، إذا كانت ملفات hbm.xml الخاصة بي تحتوي على خطأ مثل هذا:

<class name="Confluence.Domain.User" table="THIS TABLE DOES NOT EXIST">

فشلت الاختبارات، ولكن إذا كان الخطأ كالتالي:

<many-to-many class="Confluence.Domain.User" column="THIS COLUMN DOES NOT EXIST"/>

تمر الاختبارات بصمت لإخفاء الخطأ.

أقوم باختباره باستخدام SetComplete() وأتحقق من التغييرات في قاعدة البيانات، لكنني أعتقد أن الفكرة الكاملة لهذا النوع من الاختبارات لا تتمثل في القيام بذلك.

هل يمكن لأحد أن يقول لي كيفية حل هذه المشكلة؟

شكراً جزيلاً!

@ بن:إذا كان لا بد لي من تنفيذ نصوص SQL لمعرفة ما إذا كانت تعمل، فما الفائدة من استخدام هذا النوع من اختبارات الربيع؟

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

المحلول

إذا كان لديك خطأ في بناء الجملة في التعيين الخاص بك، فسوف يفشل NHibernate في config.BuildSessionFactory()

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

لست متأكدًا من علاقة هذا بـ Spring.NET بالرغم من ذلك.

نصائح أخرى

عند اختبار DAO المستند إلى NH، يجب عليك مسح الجلسة بحيث يتم تحديث قاعدة البيانات بالمعلومات الجديدة مع الاستمرار في التراجع كما كان من قبل.كيفية القيام بذلك موضحة هنا - http://forum.springframework.net/showthread.php?t=5246 لقد أضفت هذا إلى المستندات المرجعية.أتمنى أن يساعدك هذا.

هتافات ، مارك

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