Как получить доступ и проверить частные виджеты окна Qt из класса модульного тестирования Qt Test? - PullRequest
1 голос
/ 12 июня 2019

Я пытаюсь выполнить модульное тестирование (используя Qt Test) отдельных виджетов в приложении Qt Widgets, таких как menuBar, pushButton и т. Д. Проект был настроен как проект Subdirs, где и приложение Qt, и тест GUIу подпроектов есть свой собственный каталог и файл .pro.Проблема в том, что я не могу получить доступ к любому виджету, находящемуся в MainWindow, из тестового класса (MainWindowTest), так как компилятор говорит:

  • error: не могу привести 'MainWindow' к его частному базовому классу 'Ui_MainWindow'
  • 'pushButton' является закрытым членом 'Ui_MainWindow'
  • , ограниченным частным наследованием здесь

Я пытался объявить MainWindowTest другом в MainWindow, но это не такне поможетЯ также попытался переадресовать объявление MainWindowTest в отдельный заголовок, а затем включить его в mainwindow.h (все еще объявлять MainWindowTest как друга), но это тоже не помогло.

Просто создаем приложение виджета subdir по умолчанию ипроект подкаталога GuiTest AutoTest в Creator создаст для этого весь необходимый код.

Чего я на самом деле пытаюсь достичь, так это сделать экземпляр MainWindow в закрытой области MainWindowTest, а затем написать пару модулейпроверяет наличие виджетов, а затем проводит тестирование на основе событий клавиатуры и мыши.Но, поскольку я даже не могу получить доступ к виджетам, это будет ужасно трудно сделать.

Я уже просмотрел несколько «решений» в сети, но ни одно из них не кажется чистым решением.,Я хотел бы иметь возможность выполнять QVERIFY2 (win.pushButton, «pushButton не был создан.») Прямо сейчас, но, как я уже сказал, pushButton недоступен.

...