التفاف تلقائيا وحدة الاختبارات في المعاملات DB؟

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

  •  03-07-2019
  •  | 
  •  

سؤال

[تحرير (هارين): تكرار ]

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

ووDB الاختبار 3GB في الحجم، حتى استعادتها في بداية كل اختبار هو ليس خيارا. أعرف أنني أستطيع أن إنشاء معاملة يدويا في الجسم من كل اختبار، ولكن أنا أبحث عن شيء أكثر أناقة.

وربما هناك أداة إعادة كتابة IL (إطار اوب، ربما) التي يمكن أن تفعل هذا بالنسبة لي؟ أي شخص لديه أي اقتراحات؟

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

المحلول

وهناك نوعان من التوصيات. الأول هو استخدام برنامج الإعداد والصفات TearDown لبدء المعاملات ولفة مرة أخرى عند الانتهاء. وثائق للقيام بذلك في NUnit هنا:

http://www.nunit.org/index.php ؟ p = الإعداد وص = 2.4.8

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

وبطبيعة الحال، يمكنك إنشاء المثال TransactionScope في أساليب إعداد والإنهاء كذلك.

نصائح أخرى

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

وSpring.net؟

ولقد جئت من خلفية جافا / أداة JUnit، لكنني أعرف أن في جاوة هل يمكن القيام بذلك باستخدام Springframework.

و(سيكون لديك أيضا للحصول على الاختبار من ApplicationContext / BeanFactory من أجل تطبيق اوب لذلك).

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