2015-08-29 1 views
2

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

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

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

  1. Simulate Нажмите на меню (или нажатие клавиши)
  2. Нажмите на Quit действий (или нажатие клавиши)
  3. Убедитесь, что сигнал «срабатывает()» из QAction излучается
  4. Убедитесь, что слот «закрыть» из QMainWindow был назван

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

Я нашел Qt UI testing: How to simulate a click on a QMenuBar item using QTest?, который описывает аналогичную вещь, но даже там покрыты только 1, 2, 3 (И я даже не смог заставить их работать).

Так как я могу написать такой тест? Возможно ли это?

ответ

2

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

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

+0

Я действительно узнал о QSignalSpy, но это только половина сигнального слота. :) Я также попытался переопределить мой MainWindow с тестовой версией close, но поскольку метод не определен, виртуальный тоже не работает. –

Смежные вопросы