Я пытаюсь написать модульный тест для приложения с графическим интерфейсом, используя QTestLib. Проблема в том, что один из слотов создает модальный диалог с использованием exec ()
, и я не нашел возможности взаимодействовать с этим диалогом.
Слоты, которые создают диалог, связаны с QAction. Итак, первая проблема заключается в том, что тест блокируется, когда я запускаю QAction в тесте, поскольку это приводит к вызову exec ()
. Поэтому я попытался создать QThread, который выполняет взаимодействие. Однако это не помогло.
То, что я уже пробовал (все выполнялось из потока «помощника по взаимодействию»):
QTest :: keyClicks ()
QCoreApplication :: postEvent ()
exec ()
. QMetaObject :: invokeMethod ()
postEvent ()
не работает. Итак, возникает вопрос: есть ли способ программно взаимодействовать с модальным диалоговым окном, которое было открыто с помощью метода exec ()
?
Изменить: Фактически , метод 3 работает. Проблема была в другом:
Я передал аргументы в invokeMethod ()
потоку «помощника взаимодействия», и по какой-то причине доступ к аргументам из этого потока не работал (у меня не было ошибок SEG, но они были просто пустыми).
Я предполагаю, что метод 2 также работает, и у меня просто была та же проблема, что и с методом 3, но я этого не тестировал.