Название: Симуляция действий пользователя Отправлено: 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 Цитировать в этом примере все виджеты-элементы управления объявлены как приватные, я думаю автор об этом. Да, автор именно об этом.Насчет фреймворка для тестирования - в простейшей реализации функции такого фреймворка и состоит задача. Можно пользоваться только стандартными средствами. Реализация не подразумевает ничего сложного вроде создания собственных библиотек и подключения сторонних решений. Нужно в уже существующий код внедрить функцию (функции), которые будут обладать необходимой функциональностью. При использовании эмита есть ли возможность контроля нестандартных ситуаций? |