Как проверить соединения в слот-сигнал с помощью qtest

Я только начинаю с QT и хотел бы пройти модульные тесты. Я нашел план структуры проекта, который поддерживает проведение тестов вне моего приложения.

Для моего первого теста я хотел щелкнуть пункт меню "Выход", чтобы проверить, действительно ли вызывается действие закрытия QMainWindow.

Исходя из Java со всеми его фреймворками, вот что я хотел бы сделать:

  1. Симуляция Нажмите на меню (или нажмите клавишу)
  2. Нажмите на Quit Action (или нажмите клавишу)
  3. Убедитесь, что сигнал "triggered()" QAction был выпущен
  4. Убедитесь, что слот "close" QMainWindow был вызван

Я прочитал учебник по qtest, документацию по KDE и другие материалы в сети, но я не могу выразить это с помощью qtest (пока).

Я обнаружил, что тестирование пользовательского интерфейса Qt: как имитировать щелчок по элементу QMenuBar с помощью QTest? который описывает аналогичную вещь, но даже там только 1, 2, 3 покрыты (и я даже не смог заставить их работать).

Итак, как я могу написать такой тест? Это вообще возможно?

1 ответ

Для тестирования сигнала можно использовать класс QSignalSpy http://doc.qt.io/qt-5/qsignalspy.html

Но вы хотите протестировать все приложение, а не один модуль. Для этого лучше подойдет инструмент для тестирования пользовательского интерфейса, например, squish или ranorex (оба коммерческие).

Другие вопросы по тегам