سؤال

ونحن نعمل على تطوير في C ++ لينكس وعلى وشك انشاء الاختبارات المؤتمتة. نحن عازمون على استخدام إطار اختبار مثل CxxTest CppUnit أودر. نحن نستخدم النملة لبناء البرنامج وسوف نقوم أيضا استخدامه لتشغيل الاختبارات.

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

قد يكون هناك خيار آخر لتوظيف DbUnit الفعلي - وهو VM جافا هو متاح. الاستفادة من مهمة DbUnit والنملة ويبدو أن الواعدة. أي التقارير الميدانية ذات الصلة هي موضع ترحيب!

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

المحلول 3

وكما يبدو أن هناك أي أداة تشبه DbUnit للتنمية C ++، قمنا ببناء إطار القليل من جانبنا. أساسا انها محول لاستدعاء عمليات DbUnit الفعلية من داخل testrunners C / C ++. فإنه يجعل من استخدام المهام النملة التي تقدمها DbUnit.

وحددنا بعض وحدات الماكرو مثل TS_DB_INSERT(filename) التي تدعو system("ant -Ddb.dataset=filename db.insert") وما شابه ذلك.

في هذه الحالة، db.insert هو الهدف النمل الذي ينفذ مهمة DbUnit تنفيذ عملية INSERT على قاعدة البيانات. وfilename يحيل الى مجموعة البيانات XML التي تحتوي على البيانات لإدراج. وهناك أيضا ماكرو التأكيد الذي يلتف على compare DbUnit.

وهذه القضية اختبار قد تبدو هذه:

void testDatabaseStuff
{
    TS_DB_INSERT("input.xml");

    TestedClass::doSomething();

    TS_DB_ASSERT("expected.xml");
}

نصائح أخرى

وأوصي دفعة وحدة اختبار . هل من المحتمل أن استخدام إعداد والإنهاء لتنظيف يدويا احتياطية من قاعدة البيانات. وبطبيعة الحال، هل يمكن أن نبني الخاصة ++ DbUnit بك C في ODBC. إذا كنت لا اسمحوا لي أن أعرف لأنني لا يمكن استخدام هذا كذلك!

وأنا افترض أن لديك الخاصة بك C ++ المعهد للعمل مع DB. إذا كان صحيحا، وكنت أفضل أن تفعل كل ما تبذلونه من إعداد DB بنفسك. في هذه الحالة سوف اختبار API DB الخاص بك أيضا.

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