Russian Qt Forum

Qt => Вопросы новичков => Тема начата: bistrform от Октябрь 01, 2011, 07:59



Название: Симуляция действий пользователя
Отправлено: bistrform от Октябрь 01, 2011, 07:59
Добрый день. Есть задача - существует готовое приложение (в этом случае - пример addressBook из 4.7/examples/itemview/addressbook) и заданный набор действий, которые надо совершить (надеть на кнопку, заполнить поля, переключиться на вкладку и т.д). Последовательность корректная, то есть следующее действие возможно выполнить на каждом шаге. Необходимо эти действия автоматизировать - после запуска приложения пользователь лишь смотрит на экран.
По сути, надо реализовать самый простой вариант тестирования гуя приложения. Лучшее, что я придумал - понапривязывать своих сигналов к соответствующим слотам и эмитить эти сигналы по очереди. В таком случае не понимаю, как проверять успешность действий (пусть последовательность корректная, мало ли то случится) и откуда вызывать функцию с последовательностью эмитов (не из мэйна же). Может есть более удачный вариант? Напрямую методы типа pushButton->click() не повызываешь, там все приватное.


Название: Re: Симуляция действий пользователя
Отправлено: kambala от Октябрь 01, 2011, 11:37
Напрямую методы типа pushButton->click() не повызываешь, там все приватное.


Название: Re: Симуляция действий пользователя
Отправлено: LisandreL от Октябрь 01, 2011, 12:50
kambala, в этом примере все виджеты-элементы управления объявлены как приватные, я думаю автор об этом.


Название: Re: Симуляция действий пользователя
Отправлено: kambala от Октябрь 01, 2011, 13:17
в таком случае простой путь - поменять "агрегацию ГУИ" на множественное наследование. а не обязательно простой, но канонічный путь - использовать какой-нить фреймворк для тестирования (примеров, увы, не подскажу).


Название: Re: Симуляция действий пользователя
Отправлено: ieroglif от Октябрь 01, 2011, 13:37
http://www.prog.org.ru/topic_18620_0.html


Название: Re: Симуляция действий пользователя
Отправлено: bistrform от Октябрь 01, 2011, 19:36
Цитировать
в этом примере все виджеты-элементы управления объявлены как приватные, я думаю автор об этом.
Да, автор именно об этом.
Насчет фреймворка для тестирования - в простейшей реализации функции такого фреймворка и состоит задача. Можно пользоваться только стандартными средствами. Реализация не подразумевает ничего сложного вроде создания собственных библиотек и подключения сторонних решений. Нужно в уже существующий код внедрить функцию (функции), которые будут обладать необходимой функциональностью. При использовании эмита есть ли возможность контроля нестандартных ситуаций?