Qt:Документация 4.3.2/qtestlib-manual

Материал из Wiki.crossplatform.ru

Перейти к: навигация, поиск
40px Внимание: Актуальная версия перевода документации находится здесь

__NOTOC__

Image:qt-logo.png

Главная · Все классы · Основные классы · Классы по группам · Модули · Функции

Image:trolltech-logo.png

Содержание

[править] Руководство по использованию 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