Монитор / вывод излучаемых Qt-сигналов
Я определил некоторые сигналы, которые испускаются в разных случаях:
signals:
void buttonXClicked(int x);
void numButtonsChanged(int num);
Теперь я просто хотел бы посмотреть, как выглядят эти сигналы и правильны ли параметры. Кажется, есть несколько подходов для мониторинга сигналов.
В посте здесь rohanpm ссылается на параметр -vs
который указан ближе здесь: http://qt-project.org/doc/qt-4.8/qtestlib-manual.html
Похоже, это элегантный и быстрый способ получения необходимой мне информации. Но, если честно, я не могу понять, как и куда мне бежать -vs
, Это не часть qmake
, Где еще я должен положить это? (Я довольно новичок в Qt).
В связи с QSignalSpy кажется необходимым изменить существующие классы? Разве нет "внешнего" подхода?
Существует множество документов о том, как протестировать слот, но связанных с сигналами? Могу ли я использовать printf
или же cout
где-то?
2 ответа
Я получил эту идею, читая больше о МОК и его функциональности. (По крайней мере, при использовании NetBeans) я получаю дополнительный к моему файлу ButtonTest.cpp файл moc_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: