سؤال

أي فشل في تأكيد البيانات على ويندوز يسبب أدناه التصحيح رسالة تظهر وتجميد طلبات التنفيذ.أدرك أن هذا هو السلوك المتوقع لكنه يعمل بشكل دوري على مقطوعة الرأس آلة لذلك منع وحدة الاختبارات من الفشل, بدلا من الانتظار على إدخال المستخدم إلى أجل غير مسمى.

هل هناك s مفتاح تسجيل أو مترجم العلم لا يمكن أن تستخدم لمنع هذه الرسالة مربع من طلب إدخال المستخدم في حين لا يزال يسمح الاختبار أن تفشل في ظل تأكيد?

في الأساس أنا أريد أن أفعل هذا دون تعديل أي رمز, مجرد تغيير المترجم أو ويندوز الخيارات.

وذلك بفضل!

Microsoft Visual C++ التصحيح مكتبة تأكيد http://img519.imageshack.us/img519/853/snapshotbu1.png

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

المحلول

من MSDN عن تأكيد الماكرو:

في ISAPI MFC التطبيق ، التأكيد في وضع التصحيح سوف يظهر مربع حوار مشروط (تأكيد مربعات الحوار الآن مشروط افتراضيا) ؛ هذا سوف يقطع أو تعليق التنفيذ.لقمع مشروط التأكيد الحوارات ، إضافة الأسطر التالية إلى المشروع الخاص بك الملف المصدر (projectname.cpp):

// For custom assert and trace handling with WebDbg
#ifdef _DEBUG
CDebugReportHook g_ReportHook;
#endif

مرة كنت قد فعلت هذا ، يمكنك استخدام WebDbg أداة (WebDbg.exe) لمعرفة التأكيدات.

نصائح أخرى

وأعتقد أن هذا هو الحوار الذي أبداه _CrtDbgReport التقارير من نوع _CRT_ASSERT.مع _CrtSetReportHook, يمكنك تكييف هذا السلوك على التطبيق الخاص بك بأكمله.(أييتطلب تغيير المحلي) على وجه الخصوص ، يمكنك متابعة التنفيذ بعد فشل التوكيد ، وبالتالي تجاهل ذلك.

في وحدة اختبار السياق ، الأحيان أنه من الجيد أن تحويل يؤكد (في الواقع _CrtDbgReport المكالمات) في بعض الاستثناء عادة std::الاستثناء الذي يحتوي على بعض النص بالمعلومات.هذا يميل إلى أن اذهب في طريقها إلى الوحدة الاختبار سجل الإخراج كما تفشل.هذا فقط ما تريد:فشل تأكيد يجب أن يكون فشل في اختبار الوحدة.

القيام بذلك عن طريق رمي في التقرير الخاص بك-ربط وظيفة على النحو المحدد باستخدام: _CrtSetReportHook()

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