سؤال

أقوم بتطوير تطبيق واجهة المستخدم الرسومية في QT Creator وأريد كتابة بعض اختبارات الوحدة لذلك.

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

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

المحلول 3

وأخيراً اكتشفوا كيفية إجراء الاختبارات قبل بدء التطبيق.

أضفت طريقة ثابتة واحدة في فئة الاختبارات لتشغيل الاختبارات:

#include <QtTest/QtTest>

TestClass::runTests()
{
    TestClass * test = new TestClass();

    QTest::qExec(test);
    delete test;
}

في الوظيفة الرئيسية ، افعل:

int main(int argv, char *args[])
{
    ::TestsClas::runTests();

    QApplication app(argv, args);
    MainWindow mainWindow;
    mainWindow.setGeometry(100, 100, 800, 500);
    mainWindow.show();

    return app.exec();
}

تتم طباعة نتائج الاختبار في نافذة إخراج التطبيق.

نصائح أخرى

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

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

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

استخدم أهدافًا متعددة وأعلام ما قبل المعالج لتحقيق ذلك:

int main(int argv, char *args[])
{
#ifdef TEST
    ::TestsClas::runTests();
#endif
    QApplication app(argv, args);
    MainWindow mainWindow;
    mainWindow.setGeometry(100, 100, 800, 500);
    mainWindow.show();

    return app.exec();
}

ثم انتقل إلى جزء المشاريع وأضف هدفًا جديدًا "اختبار" عن طريق تكرار "Debug". تحت خطوات البناء ، أضف حجة لجعل ذلك

CXXFLAGS+=-DTEST

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

لا يدعم QT Creator بشكل صريح اختبارات الوحدة في هذا الوقت (حتى QT Creator 2.0beta). لذلك في الوقت الحالي ، ستحتاج إلى بدء الاختبارات يدويًا.

إذا كنت تستخدم نظام بناء مثل CMake بدلاً من QMake ، فيمكنك محاولة إجراء اختبارات الوحدة تلقائيًا كجزء من عملية الإنشاء نفسها. لسوء الحظ ، لست على دراية بأي طريقة للقيام بذلك مع Qmake. يتم دعم Cmake من قبل Creator QT ، وإن لم يكن وكذلك Qmake.

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