رصد/الإخراج المنبعثة إشارات كيو تي
-
21-12-2019 - |
سؤال
قمت بتعريف بعض الإشارات التي تنبعث في مناسبات مختلفة:
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: