Тестирование графических интерфейсов с помощью GoogleTest & QTest
У меня есть графический интерфейс, и я хочу протестировать многие функции этого графического интерфейса. Проблема заключается в том, что все подвиджеты являются частными членами этого основного класса GUI. Как я могу протестировать мой основной графический интерфейс, если не могу заполнить ни один из этих подвиджетов, поскольку они являются закрытыми для меня в тестовом классе?
Например, у меня есть несколько строк редактирования в виде полей в объекте пользовательского интерфейса. Эти правки строк очищаются и выгружаются в тип объекта QVariant, специфичный для этого графического интерфейса. Я не могу заполнить эти правки из своих тестовых функций, поскольку они недоступны из-за проблем с конфиденциальностью. Поэтому я не могу проверить, соответствует ли объект QVariant данным, предоставленным графическим интерфейсом.
Я также не могу вызвать какие-либо функции QTest на определенных виджетах для запуска событий.
Например, я не могу позвонить
QTest::mouseClick(testGUI.ui->pushButton1, ...)
потому что пользовательский интерфейс является частным, и pushButton1 будет частным, независимо от того, был ли он частью пользовательского интерфейса или нет. Поэтому я не могу симулировать события щелчка мышью на этих кнопках. Я также пытался использовать
QTest::mouseClick(testGUI, ..., ..., ..., QPoint(70, 180));
Где QPoint - это абсолютная позиция кнопки по отношению к виджету, но даже это не вызывает нажатия кнопки.
Как я могу проверить эти виджеты, когда большая часть виджета является закрытой и недоступной для пользователя?
1 ответ
Вы можете попытаться создать общую библиотеку, включающую каталог build-xxx-desktop-debug. Затем в test.pro делаешь библиотеки.
Надеюсь, что это работает.