Как проверить соединения в слот-сигнал с помощью qtest
Я только начинаю с QT и хотел бы пройти модульные тесты. Я нашел план структуры проекта, который поддерживает проведение тестов вне моего приложения.
Для моего первого теста я хотел щелкнуть пункт меню "Выход", чтобы проверить, действительно ли вызывается действие закрытия QMainWindow.
Исходя из Java со всеми его фреймворками, вот что я хотел бы сделать:
- Симуляция Нажмите на меню (или нажмите клавишу)
- Нажмите на Quit Action (или нажмите клавишу)
- Убедитесь, что сигнал "triggered()" QAction был выпущен
- Убедитесь, что слот "close" QMainWindow был вызван
Я прочитал учебник по qtest, документацию по KDE и другие материалы в сети, но я не могу выразить это с помощью qtest (пока).
Я обнаружил, что тестирование пользовательского интерфейса Qt: как имитировать щелчок по элементу QMenuBar с помощью QTest? который описывает аналогичную вещь, но даже там только 1, 2, 3 покрыты (и я даже не смог заставить их работать).
Итак, как я могу написать такой тест? Это вообще возможно?
1 ответ
Для тестирования сигнала можно использовать класс QSignalSpy http://doc.qt.io/qt-5/qsignalspy.html
Но вы хотите протестировать все приложение, а не один модуль. Для этого лучше подойдет инструмент для тестирования пользовательского интерфейса, например, squish или ranorex (оба коммерческие).