Я определил некоторые сигналы, которые испускаются в разных случаях:
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
, Где еще я должен положить это? (Я довольно новичок в Qt).
Связанный с QSignalSpy Кажется, необходимо изменить существующие классы? Разве нет «внешнего» подхода?
Существует множество документов о том, как протестировать слот, но связанных с сигналами? Могу ли я использовать printf
или же cout
где-то?
Я получил эту идею, читая больше о МОК и его функциональности. (По крайней мере, при использовании 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
документация:
-против
выводит каждый сигнал, который излучается
Есть также еще немного документации, если вы запустите вывод справки:
/myTestDirectory$ testMyWidget --help | grep "\-vs"-vs outputs every signal that gets emitted
Если у вас возникли проблемы с написанием QTestLib
основанные на модульных тестах, это хорошая отправная точка для вас с Qt 4: