سؤال

قمت بتعريف بعض الإشارات التي تنبعث في مناسبات مختلفة:

signals:
    void buttonXClicked(int x);
    void numButtonsChanged(int num);

الآن أود فقط أن أرى كيف تبدو هذه الإشارات وما إذا كانت المعلمات صحيحة.يبدو أن هناك عدة طرق لمراقبة الإشارات.

في ال بريد هنا يشير rohanpm إلى المعلمة -vs والذي تم تحديده أقرب هنا:http://qt-project.org/doc/qt-4.8/qtestlib-manual.html#qtestlib-command-line-arguments

يبدو أن هذه طريقة أنيقة وسريعة للحصول على المعلومات التي أحتاجها.لكن لأكون صادقًا، فأنا غير قادر على فهم كيف وأين يجب أن أركض -vs.انها ليست جزءا من qmake.في أي مكان آخر يجب أن أضعه؟(أنا جديد جدًا على كيو تي).

ذات صلة ب QSignalSpy يبدو أنه من الضروري تغيير الطبقات الموجودة؟أليس هناك مقاربة "خارجية" أيضاً؟

هناك الكثير من الوثائق حول كيفية اختبار الفتحة - ولكن هل تتعلق بالإشارات؟هل يمكنني استخدام أ printf أو cout مكان ما؟

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

المحلول

خطرت لي هذه الفكرة أثناء قراءة المزيد عن moc ووظائفه.(على الأقل أثناء استخدام NetBeans) أحصل على ملف moc_ButtonTest.cpp الإضافي إلى ملفي ButtonTest.cpp.في الداخل طريقة تسمى:

// SIGNAL 0
void ButtonTest::buttonXClicked(int _t1)
{
    void *_a[] = { 0, const_cast<void*>(reinterpret_cast<const void*>(&_t1)) };
    QMetaObject::activate(this, &staticMetaObject, 0, _a);    
}

لا أستطيع أن أصدق أن الأمر كان بهذه السهولة ولكني أضفت للتو

std::cout <<"buttonXClicked: "<<_t1;

ويبدو أن أفعل بالضبط ما أريد.

نصائح أخرى

كما تكتب الوثائق المرتبطة:

يقوم بتشغيل وظيفة اختبار toUpper مع جميع بيانات الاختبار المتاحة، ووظيفة اختبار toInt مع بيانات الاختبار التي تسمى صفر (إذا كانت بيانات الاختبار المحددة غير موجودة، فسوف يفشل الاختبار المرتبط).

/myTestDirectory$ testMyWidget -vs -eventdelay 500

حيث testMyWidget هو الاختبار الثنائي المبني.هنا يذهب -vs توثيق:

-vs يخرج كل إشارة تنبعث منها

هناك أيضًا بعض الوثائق الإضافية إذا قمت بإخراج مخرجات المساعدة:

/myTestDirectory$ testMyWidget --help | grep "\-vs"
-vs outputs every signal that gets emitted

إذا كنت تواجه مشكلة في الكتابة QTestLib بناءً على اختبارات الوحدة، فهذه نقطة انطلاق جيدة بالنسبة لك مع Qt 4:

دليل كيو تيست ليب

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