سؤال

لقد قمنا بتنفيذ JUNIT4 في تطبيقنا والذي يستخدم Spring Core & JPA مع DB2. نحتاج إلى اختبار وظيفة كاملة تسترجع البيانات من قاعدة بيانات واحدة ودمج في قاعدة بيانات أخرى.

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

تطبيق

فئة testcase قمنا بتضمين التعليقات التوضيحية التالية لجعل حالة الاختبار تعمل تحت معاملة إذا لزم الأمر ،

@RunWith(SpringJUnit4ClassRunner.class)
@TestExecutionListeners({
      DependencyInjectionTestExecutionListener.class,    
      TransactionalTestExecutionListener.class})
@ContextConfiguration(locations={""})
@TransactionConfiguration(transactionManager="defaultTransactionManager", defaultRollback=false)
@Transactional

في التطبيق لدينا فئة مدير لتنفيذ هذه العملية باستخدام طريقة dosynch (). من هذه الطريقة ، سيتم استدعاء طريقة TXStore () من فئة Crudhelper لتهيئة طريقة Dostore () (في نفس الفئة) لدمج الكيان على قاعدة البيانات.

فيما يلي المعاملات التعريفية من خلال منطق حالة الاختبار هذه

TestCase testSynch() - @Transactional(propagation=Propagation.SUPPORTS)
Manager doSynch() - @Transactional(propagation=Propagation.NEVER)
CRUDHelper txStore() - @Transactional(propagation=Propagation.REQUIRED)
           doStore() - No Transactional annotation

يتم تمييز Dosynch () كما لم يكن في هذه المرحلة لا يحتاج إلى أي معاملة وفي مستويات أخرى كما هو الحال في crudhelper ، يمكن وضع علامة على المعاملة كما هو مطلوب لضمان توفر المعاملة.

مشكلة

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

طريقة المدير عند استدعاؤها من JSP تعمل بشكل رائع. كما اختبرنا عن طريق الاتصال بـ TXStore () مباشرة من حالة الاختبار ، كما أنه يعمل بشكل جيد.

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

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

المحلول

هل تضع علامة على أساليبك مع @Rollback حاشية. ملاحظة؟

من جافادوك:

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

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