سؤال

أنا أكتب بعض الفصول التي تنشئ ملف XML. (التفاصيل ربما ليست مهمة في الوقت الراهن).

أتساءل عن أفضل استراتيجية اختبار.

  • لا أرغب في إعادة كتابة رمز توليد XML فقط لمقارنة الإخراج ، عندما أتمكن من كتابة الملف لقرصه ومقارنته في بعض المعالم البارزة (لن تتغير مواصفات XML كثيرًا ، مثل مرة أو مرتين كل زوجين سنوات)
  • أنا مهتم أكثر باختبار سلوك الهندسة المعمارية بدلاً من Getters & Setters

الخيارات التي تتبادر إلى الذهن:

  • إعادة بناء ملف XML في بيئة الاختبار ومقارنة تمثيلات السلسلة
  • التحقق يدويًا النتيجة (الكتابة إلى ملف ، إلخ)
  • إعادة بناء ملف XML في الذاكرة في بيئة الاختبار ومقارنة العناصر في الذاكرة.

المكافأة الافتراضية إذا كنت تعرف أي مكتبات لاختبار C ++ و/أو Google.

أفكار؟

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

المحلول

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

نصائح أخرى

في الماضي ، اقتربت من هذه الطريقتين:

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

في الحالة التي لديك فيها كاتب وقارئ ملف XML ، يمكنك مقارنة النسخة الأصلية بنتيجة رحلة ذهابًا وإيابًا.

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

قد تفكر في استخدام وحدة XML: http://xmlunit.sourceforge.net. يوفر فئات تمديد Junit التي يمكن استخدامها لتأكيد المساواة في ملفات XML.

قد تفكر في أداة Diff XML. هناك واحدة مجانية متوفرة على MSDN: أداة XML Diff و Patch.

أرى أنك تبحث عن أدوات C ++. في هذه الحالة، libxmldiff قد يكون أكثر ملاءمة.

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