Qt:Документация 4.3.2/qtestlib-manual
Материал из Wiki.crossplatform.ru
Внимание: Актуальная версия перевода документации находится здесь |
__NOTOC__
Главная · Все классы · Основные классы · Классы по группам · Модули · Функции |
Содержание |
[править] Руководство по использованию QTestLib
Инфраструктура QTestLib, предоставленая компанией Trolltech, является инструментом для тестирования Qt приложений и библиотек. QTestLib предоставляет полный базовый функционал для тестирования графического пользовательского интерфейса.
Содержание:
[править] Возможности QTestLib
QTestLib создано для облегчения написания тестов для Qt приложений и библиотек:
Возможности | Детали |
---|---|
Легкий | QTestLib содержит порядка 6000 строк кода и 60 экспортируемых символов. |
Самодостаточный | QTestLib нуждается только в нескольких симоволах из Qt Core библиотеки для non-gui тестирования. |
Быстрое тестирование | QTestLib не требует запуска специальных тестов; нет специальных регистраций для тестов. |
Тестирование управления данными | Тестирование может быть выполнено в любое время с разными данными. |
Базовое тестирование интерфейса пользователя | QTestLib предлогает функционал симуляции сообщений от мыши и клавиатуры. |
Дружественность к IDE | QTestLib выводит сообщения, которые могут быть интерпретированны в Visual Studio и KDevelop. |
Потоко безопасность | Отчет об ошибках потоковой безопасности. |
Безопасность типов | Исчерпывающее использование шаблонов предотвращения ошибок внесенных неявной проверкой типов . |
Легкая расширяемость | Пользовательские типы могут быть легко добавлены в тестируемые данные и тестовый вывод данных. |
Замечание: Для высокоуровневых пользовательских графических интерфейсов и приложений, которым необходимо тестирование, читайте Qt testing products provided by Trolltech partners.
[править] QTestLib API
Все открытые методы находятся в пространства имён QTest. Дополнительно, класс QSignalSpy предоставляет легкое самонаблюдение для Qt сигналов и слотов.
[править] Использование QTestLib
[править] Создание теста
Для создания теста переопределите QObject и добавьте один или несколько закрытых слотов в нем. Каждый закрытый слот является функцией тестом вашего теста. QTest::qExec() используется для выполнения всех функций тестов в объекте тесте.
Дополнительно, нужно добавить четыре закрытых слота, которы не будут выполнять роль функций тестов. Они запускаются структурой тестирования и могут быть использованы для инициализации и очистки любого из тестов или текущей функции теста.
- initTestCase() выполняется перед запуском первой функции теста.
- cleanupTestCase() выполняется после выполнения последней функции теста.
- init() выполняется перед запуском каждой функции теста.
- cleanup() выполняется после каждой функции теста.
Если initTestCase() вернуо ошибку, значит нет функций тестов, которые могут быть запущены. Если init() вернул ошибку, значит функция тест не была запущена, после чего тест перейдет к следующей функции тесту.
Пример:
class MyFirstTest: public QObject { Q_OBJECT private slots: void initTestCase() { qDebug("called before everything else"); } void myFirstTest() { QVERIFY(1 == 1); } void mySecondTest() { QVERIFY(1 != 2); } void cleanupTestCase() { qDebug("called after myFirstTest and mySecondTest"); } };
Другие примеры приведены в Учебное пособие по QTestLib.
[править] Сборка
Если вы используете qmake в качестве инструмента сборки, добавьте следующустроку в ваш файл проекта:
CONFIG += qtestlib
Если вы используете другой инструмент сборки, убедитесь что вы добавили путь к header файлам QTestLib (обычно include/QtTest в директории установки Qt). Если вы используете release сбоку Qt, свяжите ваш тест с библиотекой QtTest. Для debug сборок, используйте QtTest_debug.
Смотрите Написание тестов для получения пояснения как это делается шаг за шагом.
[править] Аргументы командной строки QTestLib
[править] Синтаксис
Синтаксис выполнения автотеста имеет такую форму:
testname [options] [testfunctions[:testdata]]...
Замените testname реальным именем. testfunctions может содержать имена функций тестов, которые должны выполняться. Если testfunctions не задана, то будут выполнены все тесты. Если к имени функции теста будут добавлена testdata, то функция тест будет выполнена только с testdata.
Например:
/myTestDirectory$ testQString toUpper
Запуск функции теста выполняющей toUpper со всеми доступными тестовыми данными.
/myTestDirectory$ testQString toUpper toInt:zero
Запускает функцию тест со всеми доступными тестовыми данными toUpper, и функцию тест для toInt с тестовыми данными установленными в ноль (если тестовые данные не существуют, осациированный с ними тест закончится ошибкой.
/myTestDirectory$ testMyWidget -vs -eventdelay 500
Запускает функцию тест testMyWidget, выводит информацию о возникновении любого сигнала и ждет 500 милисекунд после каждой симуляции событий мыши/клавиатуры.
[править] Опции
Общеприняты следующие аргументы командной строки:
- -help
вывод доступных аргументов командной строки и получение помощи. - -functions
вывод всех доступных функций тестов теста. - -o filename
запись выводимых данных в файл - -silent
silent вывод, показывает только предупреждения, ошибки и минимальное статус сообщение - -v1
verbose вывод; выводит информацию от введенных и существующих функций тестов. - -v2
расширение verbose вывода; также выводит QCOMPARE() и QVERIFY() - -vs
выводит информацию о возникновении любого сигнала. - -xml
вывод в XML-формате вместо обычного текста - -lightxml
выводит результаты как XML поток - -eventdelay ms
if no delay is specified for keyboard or mouse simulation ( QTest::keyClick(), QTest::mouseClick() etc.), the value from this parameter (in milliseconds) is substituted. - -keydelay ms
like -eventdelay, but only influences keyboard simulation and not mouse simulation. - -mousedelay ms
like -eventdelay, but only influences mouse simulation and not keyboard simulation. - -keyevent-verbose
освещать имитацию клавитуры более подробно - -maxwarnings numberBR sets the maximum number of warnings to output. 0 for unlimited, defaults to 2000.
Copyright © 2007 Trolltech | Trademarks | Qt 4.3.2
|