Описание пространства имен QTest
|
class | QTouchEventSequence |
enum | AttributeIndex { AI_Undefined, AI_Name, AI_Result, AI_Tests, ..., AI_Iterations } |
enum | KeyAction { Press, Release, Click } |
enum | LogElementType { LET_Undefined, LET_Property, LET_Properties, LET_Failure, ..., LET_SystemError } |
enum | MouseAction { MousePress, MouseRelease, MouseClick, MouseDClick, MouseMove } |
enum | SkipMode { SkipSingle, SkipAll } |
enum | TestFailMode { Abort, Continue } |
void | addColumn ( const char * name, T * dummy = 0 ) |
const char * | currentDataTag () |
bool | currentTestFailed () |
const char * | currentTestFunction () |
void | ignoreMessage ( QtMsgType type, const char * message ) |
void | keyClick ( QWidget * widget, Qt::Key key, Qt::KeyboardModifiers modifier = Qt::NoModifier, int delay = -1 ) |
void | keyClick ( QWidget * widget, char key, Qt::KeyboardModifiers modifier = Qt::NoModifier, int delay = -1 ) |
void | keyClicks ( QWidget * widget, const QString & sequence, Qt::KeyboardModifiers modifier = Qt::NoModifier, int delay = -1 ) |
void | keyEvent ( KeyAction action, QWidget * widget, Qt::Key key, Qt::KeyboardModifiers modifier = Qt::NoModifier, int delay = -1 ) |
void | keyEvent ( KeyAction action, QWidget * widget, char ascii, Qt::KeyboardModifiers modifier = Qt::NoModifier, int delay = -1 ) |
void | keyPress ( QWidget * widget, Qt::Key key, Qt::KeyboardModifiers modifier = Qt::NoModifier, int delay = -1 ) |
void | keyPress ( QWidget * widget, char key, Qt::KeyboardModifiers modifier = Qt::NoModifier, int delay = -1 ) |
void | keyRelease ( QWidget * widget, Qt::Key key, Qt::KeyboardModifiers modifier = Qt::NoModifier, int delay = -1 ) |
void | keyRelease ( QWidget * widget, char key, Qt::KeyboardModifiers modifier = Qt::NoModifier, int delay = -1 ) |
void | mouseClick ( QWidget * widget, Qt::MouseButton button, Qt::KeyboardModifiers modifier = 0, QPoint pos = QPoint(), int delay = -1 ) |
void | mouseDClick ( QWidget * widget, Qt::MouseButton button, Qt::KeyboardModifiers modifier = 0, QPoint pos = QPoint(), int delay = -1 ) |
void | mouseMove ( QWidget * widget, QPoint pos = QPoint(), int delay = -1 ) |
void | mousePress ( QWidget * widget, Qt::MouseButton button, Qt::KeyboardModifiers modifier = 0, QPoint pos = QPoint(), int delay = -1 ) |
void | mouseRelease ( QWidget * widget, Qt::MouseButton button, Qt::KeyboardModifiers modifier = 0, QPoint pos = QPoint(), int delay = -1 ) |
QTestData & | newRow ( const char * dataTag ) |
int | qExec ( QObject * testObject, int argc = 0, char ** argv = 0 ) |
int | qExec ( QObject * testObject, const QStringList & arguments ) |
void | qSleep ( int ms ) |
void | qWait ( int ms ) |
bool | qWaitForWindowShown ( QWidget * window ) |
char * | toHexRepresentation ( const char * ba, int length ) |
char * | toString ( const T & value ) |
char * | toString ( const QLatin1String & string ) |
char * | toString ( const QString & string ) |
char * | toString ( const QByteArray & ba ) |
char * | toString ( const QTime & time ) |
char * | toString ( const QDate & date ) |
char * | toString ( const QDateTime & dateTime ) |
char * | toString ( const QChar & character ) |
char * | toString ( const QPoint & point ) |
char * | toString ( const QSize & size ) |
char * | toString ( const QRect & rectangle ) |
char * | toString ( const QUrl & url ) |
char * | toString ( const QPointF & point ) |
char * | toString ( const QSizeF & size ) |
char * | toString ( const QRectF & rectangle ) |
char * | toString ( const QVariant & variant ) |
QTouchEventSequence | touchEvent ( QWidget * widget = 0, QTouchEvent::DeviceType deviceType = QTouchEvent::TouchScreen ) |
QBENCHMARK | |
QBENCHMARK_ONCE | |
QCOMPARE ( actual, expected ) | |
QEXPECT_FAIL ( dataIndex, comment, mode ) | |
QFAIL ( message ) | |
QFETCH ( type, name ) | |
QSKIP ( description, mode ) | |
QTEST ( actual, testElement ) | |
QTEST_APPLESS_MAIN ( TestClass ) | |
QTEST_MAIN ( TestClass ) | |
QTEST_NOOP_MAIN () | |
QVERIFY2 ( condition, message ) | |
QVERIFY ( condition ) | |
QWARN ( message ) |
Пространство имен QTest содержит все функции и объявления, которые связаны с инструментом QTestLib.
Пожалуйста, обратитесь к документации Руководство по использованию QTestLib для получения информации о том, как писать модульные тесты.
Класс QTouchEventSequence используется для имитации последовательности сенсорных событий. Далее...
Это перечисление номеров различных тестов.
Константа | Значение |
---|---|
QTest::AI_Undefined | -1 |
QTest::AI_Name | 0 |
QTest::AI_Result | 1 |
QTest::AI_Tests | 2 |
QTest::AI_Failures | 3 |
QTest::AI_Errors | 4 |
QTest::AI_Type | 5 |
QTest::AI_Description | 6 |
QTest::AI_PropertyValue | 7 |
QTest::AI_QTestVersion | 8 |
QTest::AI_QtVersion | 9 |
QTest::AI_File | 10 |
QTest::AI_Line | 11 |
QTest::AI_Metric | 12 |
QTest::AI_Tag | 13 |
QTest::AI_Value | 14 |
QTest::AI_Iterations | 15 |
Данное перечисление описывает доступные действия для обработки клавиш.
Константа | Значение | Описание |
---|---|---|
QTest::Press | 0 | Клавиша нажата. |
QTest::Release | 1 | Клавиша отпущена. |
QTest::Click | 2 | По клавише щёлкнули (нажали и отпустили). |
Перечисление определяет виды сообщений журнала тестов.
Константа | Значение |
---|---|
QTest::LET_Undefined | -1 |
QTest::LET_Property | 0 |
QTest::LET_Properties | 1 |
QTest::LET_Failure | 2 |
QTest::LET_Error | 3 |
QTest::LET_TestCase | 4 |
QTest::LET_TestSuite | 5 |
QTest::LET_Benchmark | 6 |
QTest::LET_SystemError | 7 |
Данное перечисление описывает возможные действия для обработки мыши.
Константа | Значение | Описание |
---|---|---|
QTest::MousePress | 0 | Кнопка мыши нажата. |
QTest::MouseRelease | 1 | Кнопка мыши отпущена. |
QTest::MouseClick | 2 | Кнопкой мыши щёлкнули (нажали и отпустили). |
QTest::MouseDClick | 3 | Кнопкой мыши сделали двойной щелчок (нажали и отпустили дважды). |
QTest::MouseMove | 4 | Указатель мыши был перемещён. |
Данное перечисление описывает режимы для пропуска тестов во время выполнения тестовых данных.
Константа | Значение | Описание |
---|---|---|
QTest::SkipSingle | 1 | Пропустить текущую запись в тестовой таблице; продолжить выполнение всех остальных записей в таблице. |
QTest::SkipAll | 2 | Пропустить все записи в тестовой таблице; тест не будет выполняться далее. |
Смотрите также QSKIP().
Данное перечисление описывает режимы для обработки ожидаемых отказов макросов QVERIFY() и QCOMPARE().
Константа | Значение | Описание |
---|---|---|
QTest::Abort | 1 | Прерывает выполнение теста. Используйте этот режим, когда нецелесообразно выполнять тест далее после ожидаемой неудачи. |
QTest::Continue | 2 | Продолжает выполнение теста после ожидаемой неудачи. |
Смотрите также QEXPECT_FAIL().
Добавляет столбец с типом T к текущим тестовым данным. name является названием столбца. dummy является обходным решением для ошибок компиляторов и может быть проигнорировано.
Для заполнения столбца значениями может быть использована newRow(). Используйте QFETCH() для выборки данных в реальном тесте.
Пример:
void myTestFunction_data() { QTest::addColumn<int>("intval"); QTest::addColumn<QString>("str"); QTest::addColumn<double>("dbl"); QTest::newRow("row1") << 1 << "hello" << 1.5; }
Для добавления пользовательских типов к тестовым данным тип должен быть зарегистрирован в QMetaType через Q_DECLARE_METATYPE().
Замечание: Этот макрос может использоваться только в функциях тестовых данных, которые вызываются тестовой платформой.
Для более обширного примера смотрите Тестирование, управляемое данными.
Смотрите также QTest::newRow(), QFETCH() и QMetaType.
Возвращает имя текущих тестовых данных. Если у теста нет никаких назначенных тестовых данных, то функция возвращает 0.
Возвращает true, если текущая функция теста завершилась с ошибкой, в противном случае возвращает false.
Возвращает имя тестовой функции, которая сейчас выполняется.
Пример:
void MyTestClass::cleanup()
{
if (qstrcmp(currentTestFunction(), "myDatabaseTest") == 0) {
// очищаем все соединения с базой данных
closeAllDatabases();
}
}
Игнорирует сообщения, созданные qDebug() и qWarning(). Если будет выведено сообщение message с соответствующим типом type, то оно будет удалено из тестового журнала. Если тест завершается, а message не выводится, то в тестовый журнал добавляется неудача теста.
Замечание: При вызове этой функции будет проигнорировано только одно сообщение. Если сообщение, которое вам необходимо проигнорировать, выдаётся дважды, то вы должны вызвать ignoreMessage() тоже дважды.
Пример:
QDir dir; QTest::ignoreMessage(QtWarningMsg, "QDir::mkdir: Empty or null file name(s)"); dir.mkdir("");
В приведённом выше примере теста QDir::mkdir() имеет право выдать предупреждение при вызове с неверным именем файла.
Имитирует щелчок клавишей key с необязательным модификатором modifier на виджете widget. Если задержка delay больше, чем 0, то тест будет ждать delay миллисекунд.
Примеры:
QTest::keyClick(myWidget, Qt::Key_Escape); QTest::keyClick(myWidget, Qt::Key_Escape, Qt::ShiftModifier, 200);
Первый из приведённых выше примеров имитирует щелчок клавишей escape на myWidget без любых модификаторов клавиатуры и без задержки. Второй из вышеприведённых примеров имитирует щелчок shift-escape на myWidget с последующей задержкой теста в 200 мс.
Смотрите также QTest::keyClicks().
Это перегруженная функция.
Имитирует щелчок клавишей key с необязательным модификатором modifier на виджете widget. Если задержка delay больше, чем 0, то тест будет ждать delay миллисекунд.
Пример:
QTest::keyClick(myWidget, 'a');
Пример выше имитирует щелчок a на myWidget без любых модификаторов клавиатуры и без задержки теста.
Смотрите также QTest::keyClicks().
Имитирует щелчки последовательности кнопок sequence на виджете widget. Дополнительно могут быть указаны модификаторы клавиатуры modifier, а также задержка delay (в миллисекундах) теста после каждого нажатия и отпускания клавиши.
Пример:
QTest::keyClicks(myWidget, "hello world");
Пример выше имитирует щелчки последовательности кнопок, представляющих "hello world", на myWidget без любых модификаторов клавиатуры и без задержек теста.
Смотрите также QTest::keyClick().
Отправляет Qt-событие клавиши виджету widget с заданной кнопкой key и связанным действием action. Дополнительно может быть указан модификатор клавиатуры modifier, а также задержка delay (в миллисекундах) теста перед отправкой события.
Это перегруженная функция.
Отправляет Qt-событие клавиши виджету widget с заданной кнопкой ascii и связанным действием action. Дополнительно может быть указан модификатор клавиатуры modifier, а также задержка delay (в миллисекундах) теста перед отправкой события.
Имитирует нажатие клавиши key с необязательным модификатором modifier на виджете widget. Если задержка delay больше, чем 0, то тест будет ждать delay миллисекунд.
Замечание: В какой-то момент вы должны отпустить клавишу при помощи keyRelease().
Смотрите также QTest::keyRelease() и QTest::keyClick().
Это перегруженная функция.
Имитирует нажатие клавиши key с необязательным модификатором modifier на виджете widget. Если задержка delay больше, чем 0, то тест будет ждать delay миллисекунд.
Замечание: В какой-то момент вы должны отпустить клавишу при помощи keyRelease().
Смотрите также QTest::keyRelease() и QTest::keyClick().
Имитирует отпускание клавиши key с необязательным модификатором modifier на виджете widget. Если задержка delay больше, чем 0, то тест будет ждать delay миллисекунд.
Смотрите также QTest::keyPress() и QTest::keyClick().
Это перегруженная функция.
Имитирует отпускание клавиши key с необязательным модификатором modifier на виджете widget. Если задержка delay больше, чем 0, то тест будет ждать delay миллисекунд.
Смотрите также QTest::keyClick().
Имитирует щелчок кнопкой мыши button с необязательным модификатором modifier на виджете widget. Позиция щелчка определятся pos; позицией по умолчанию является центр виджета. Если задержка delay указана, то тест будет ждать указанное количество миллисекунд перед нажатием и перед отпусканием кнопки.
Смотрите тажке QTest::mousePress() и QTest::mouseRelease().
Имитирует двойной щелчок кнопкой мыши button с необязательным модификатором modifier на виджете widget. Позиция щелчка определятся pos; позицией по умолчанию является центр виджета. Если задержка delay указана, то тест будет ждать указанное количество миллисекунд перед каждым нажатием и отпусканием.
Смотрите также QTest::mouseClick().
Перемещает указатель мыши к виджету widget. Если позиция pos не определена, то указатель мыши перемещается в центр виджета. Если задержка delay (в миллисекундах) задана, то тест будет ждать перед перемещением указателя мыши.
Имитирует нажатие кнопки мыши button с необязательным модификатором modifier на виджете widget. Позиция определятся pos; позицией по умолчанию является центр виджета. Если задержка delay указана, то тест будет ждать указанное количество миллисекунд перед нажатием.
Смотрите также QTest::mouseRelease() и QTest::mouseClick().
Имитирует отпускание кнопки мыши button с необязательным модификатором modifier на виджете widget. Позиция отпускания определятся pos; позицией по умолчанию является центр виджета. Если задержка delay указана, то тест будет ждать указанное количество миллисекунд перед отпусканием кнопки.
Смотрите также QTest::mousePress() и QTest::mouseClick().
Добавляет новую строку к текущим тестовым данным. dataTag - это название тестовых данных, которое появляется в выводе теста. Возвращает ссылку на QTestData, которая может быть использована для потока данных.
Пример:
void myTestFunction_data() { QTest::addColumn<QString>("aString"); QTest::newRow("just hello") << QString("hello"); QTest::newRow("a null string") << QString(); }
Замечание: Этот макрос может использоваться только в функциях тестовых данных, которые вызываются тестовой платформой.
Для более обширного примера смотрите Тестирование, управляемое данными.
Смотрите также addColumn() и QFETCH().
Выполняет тесты, объявленные в testObject. Кроме того, выполняются закрытые слоты initTestCase(), cleanupTestCase(), init() и cleanup(), если они существуют. Для получения дополнительной информации смотрите Создание теста.
Дополнительно могут быть предоставлены аргументы argc и argv. Для получения списка распознаваемых аргументов читайте Аргументы командной строки QTestLib.
Для автономных тестов можно использовать вспомогательный макрос QTEST_MAIN() для объявления основного метода, который анализирует аргументы командной строки и выполняет тесты.
Возвращает 0, если все тесты завершились успешно. Возвращает значение, отличное от 0, если тесты завершились неудачей или в случае необработанных исключений. Возвращаемое из этой функции значение является также кодом завершения тестового приложения, когда используется макрос QTEST_MAIN().
Следующий пример выполнит все тесты в MyFirstTestObject и MySecondTestObject:
MyFirstTestObject test1; QTest::qExec(&test1); MySecondTestObject test2; QTest::qExec(&test2);
Замечание: Эта функция не реентерабельна, только один тест может быть запущен за раз. Тест, который выполняется через qExec(), не может запустить другой тест через qExec(), а потокам не разрешается одновременно вызывать qExec().
Если вы программно создали аргументы, а не получили их из командной строки в main(), то скорее всего для вас представляет интерес использование QTest::qExec(QObject *, const QStringList &), поскольку она Unicode-безопасна.
Смотрите также QTEST_MAIN().
Это перегруженная функция.
Ведет себя идентично qExec(QObject *, int, char**), но принимает QStringList как аргументы arguments, вместо списка char**.
Эта функция была введена в Qt 4.4.
Засыпает на ms миллисекунд, блокируя выполнения теста. qSleep() не делает никаких обработок событий и оставляет ваш тест безответным. У сетевых соединений может завершиться таймаут во время сна. Для неблокирующего сна используйте qWait().
ms должен быть больше, чем 0.
Замечание: Функция qSleep() вызывает либо nanosleep() в Unix, либо Sleep() в Windows, так что точность времени, проведённого в qSleep(), зависит от операционной системы.
Пример:
QTest::qSleep(250);
Смотрите также qWait().
Ждёт ms миллисекунд. Пока идёт ожидание, события будут обрабатываться и ваш тест продолжает отвечать на события пользовательского интерфейса и сетей связи.
Пример:
int i = 0; while (myNetworkServerNotResponding() && i++ < 50) QTest::qWait(250);
Код выше ожидает ответа сетевого сервера в течение максимум около 12,5 секунд.
Смотрите также QTest::qSleep().
Ждёт отображения окна window на экране. В основном это полезно для асинхронных систем, подобных X11, где процесс появления окна на экране происходит в течение некоторого времени после того, как поступил запрос на его отображение на экране. Возвращает true.
Пример:
QWidget widget; widget.show(); QTest::qWaitForWindowShown(&widget);
Эта функция была введена в Qt 4.6.
Возвращает указатель на строку, которая является строкой ba, представленной как последовательность разделённых пробелами шестнадцатеричных символов. Если вход считается слишком длинным, то он усекается. Усечение обозначается в возвращаемой строке как многоточие в конце.
length является длиной строки ba.
Возвращает текстовое представление value. Эта функция используется QCOMPARE() для вывода подробной информации в случае неудачи теста.
Этой функцией вы можете добавить специализацию к вашему тесту для включения подробного вывода.
Замечание: Тот, кто вызывает toString(), должен удалить возвращаемые данные с помощью delete[]. Ваша реализация должна возвращать строку, созданную с помощью new[] или qstrdup().
Пример:
namespace QTest { template<> char *toString(const MyPoint &point) { QByteArray ba = "MyPoint("; ba += QByteArray::number(point.x()) + ", " + QByteArray::number(point.y()); ba += ")"; return qstrdup(ba.data()); } }
Пример выше определяет специализацию toString() для класса с названием MyPoint. Всякий раз, когда сравнение двух экземпляров MyPoint ложно, QCOMPARE() будет вызывать эту функцию для вывода содержимого MyPoint в журнал теста.
Смотрите также QCOMPARE().
Это перегруженная функция.
Возвращает текстовое представление заданной строки string.
Это перегруженная функция.
Возвращает текстовое представление заданной строки string.
Это перегруженная функция.
Возвращает текстовое представление массива байт ba.
Смотрите также QTest::toHexRepresentation().
Это перегруженная функция.
Возвращает текстовое представление заданного времени time.
Это перегруженная функция.
Возвращает текстовое представление заданной даты date.
Это перегруженная функция.
Возвращает текстовое представление даты и времени, указанных в dateTime.
Это перегруженная функция.
Возвращает текстовое представление заданного символа character.
Это перегруженная функция.
Возвращает текстовое представление заданной точки point.
Это перегруженная функция.
Возвращает текстовое представление заданного размера size.
Это перегруженная функция.
Возвращает текстовое представление заданного прямоугольника rectangle.
Это перегруженная функция.
Возвращает текстовое представление заданного url.
Эта функция была введена в Qt 4.4.
Это перегруженная функция.
Возвращает текстовое представление заданной точки point.
Это перегруженная функция.
Возвращает текстовое представление заданного размера size.
Это перегруженная функция.
Возвращает текстовое представление заданного прямоугольника rectangle.
Это перегруженная функция.
Возвращает текстовое представление заданного варианта variant.
Создаёт и возвращает QTouchEventSequence для устройства deviceType для имитации событий для виджета widget.
Когда сенсорные события добавляются в последовательность, виджет widget также будет использоваться для преобразования позиции, предоставленной в экранных координатах, если другой виджет не предоставлен в соответствующих вызовах press(), move() и т.д.
Сенсорные события передаются системе событий, когда вызывается деструктор QTouchEventSequence (например, когда объект выходит за пределы действия).
Этот макрос используется для измерения производительности кода в тесте. Код для эталонного тестирования содержится в блоке кода после этого макроса.
Например:
void TestBenchmark::simple() { QString str1 = QLatin1String("This is a test string"); QString str2 = QLatin1String("This is a test string"); QCOMPARE(str1.localeAwareCompare(str2), 0); QBENCHMARK { str1.localeAwareCompare(str2); } }
Смотрите также Создание эталонного теста и Разработка эталонного теста.
Макрос QBENCHMARK_ONCE предназначен для измерения производительности блока кода путём однократного запуска.
Этот макрос используется для измерения производительности кода в тесте. Код для эталонного тестирования содержится в блоке кода после этого макроса.
В отличие от QBENCHMARK содержимое блока с кодом выполняется только один раз. Прошедшее время будет отражено как "0", если оно слишком мало для измерения выбранным средством. (Использование)
Эта функция была введена в Qt 4.6.
Смотрите также Создание эталонного теста и Разработка эталонного теста.
Макрос QCOMPARE сравнивает фактическое значение actual с ожидаемым значением expected при помощи оператора равенства. Если actual и expected идентичны, то выполнение продолжается. Если нет, то в журнал теста записывается неудача, а тест далее не выполняется.
В случае сравнения вещественных чисел одинарной и двойной точности (float и double) для сравнения используется qFuzzyCompare(). Это означает, что сравнение с 0, вероятно, будет неудачным. Одним из решений этого является сравнение с 1 и добавление 1 к производимому выводу.
QCOMPARE пытается вывести содержимое значения, если сравнение было неудачным, так что в журнале теста будет видно, почему сравнение не прошло.
QCOMPARE очень строг по отношению к типам данных. actual и expected должны быть одного и того же типа, в противном случае тест не будет компилироваться. Это препятствует появлению неопределённого поведения; поведения, которое обычно возникает, когда компилятор неявно приводит аргументы.
Если вы используете QCOMPARE() для сравнения объектов QStringList, то он запустит сравнение объектов с концов списков.
Для ваших собственных классов вы можете использовать QTest::toString() для формирования значений для вывода в журнал теста.
Замечание: Этот макрос может использоваться только в тестовых функциях, которые вызываются тестовой платформой.
Пример:
QCOMPARE(QString("hello").toUpper(), QString("HELLO"));
Смотрите также QVERIFY() и QTest::toString().
Макрос QEXPECT_FAIL() помечает следующий QCOMPARE() или QVERIFY() как ожидающий неудачи. Вместо добавления неудачи в журнал теста будет сообщено об ожидаемой неудаче.
Если QVERIFY() или QCOMPARE() помечены как ожидающие неудачу, но вместо этого успешно проходят, то в журнал теста записывается неожиданный успех (XPASS).
Параметр dataIndex описывает, для какой записи в тестовых данных ожидается неудача. Передайте пустую строку (""), если неудача ожидается для всех записей или если тестовые данные отсутствуют.
Для ожидаемой неудачи в журнал теста будет добавлен комментарий comment.
Режим mode - это QTest::TestFailMode и устанавливает, должен ли тест продолжать выполнение или нет.
Замечание: Этот макрос может использоваться только в тестовых функциях, которые вызываются тестовой платформой.
Пример 1:
QEXPECT_FAIL("", "Will fix in the next release", Continue); QCOMPARE(i, 42); QCOMPARE(j, 43);
В приведённом выше примере ожидаемая неудача будет записана в тестовый вывод, если переменная i не равна 42. Если переменная i равна 42, то вместо этого будет записан неожиданный успех. QEXPECT_FAIL() не оказывает никакого влияния на второй оператор QCOMPARE() в примере.
Пример 2:
QEXPECT_FAIL("data27", "Oh my, this is soooo broken", Abort); QCOMPARE(i, 42);
Тестовая функция выше не будет продолжать выполнение для записи data27 тестовых данных.
Смотрите также QTest::TestFailMode, QVERIFY() и QCOMPARE().
Этот макрос может использоваться для принудительной неудачи теста. Тест останавливает выполнение и сообщение message о неудаче добавляется в журнал теста.
Замечание: Этот макрос может использоваться только в тестовых функциях, которые вызываются тестовой платформой.
Пример:
if (sizeof(int) != 4) QFAIL("This test has not been ported to this platform yet.");
Макрос выборки создаёт локальную переменную с именем name и типом type в стеке. Имя name должно соответствовать имени элемента из тестовых данных. Если такого элемента не существует, то тест аварийно завершится по assert.
Предположим, что тест имеет следующие данные:
void TestQString::toInt_data() { QTest::addColumn<QString>("aString"); QTest::addColumn<int>("expected"); QTest::newRow("positive value") << "42" << 42; QTest::newRow("negative value") << "-42" << -42; QTest::newRow("zero") << "0" << 0; }
В тестовых данных есть два элемента, QString, названный aString, и целое, названное expected. Для выбора этих значений в реальном тесте:
void TestQString::toInt() { QFETCH(QString, aString); QFETCH(int, expected); QCOMPARE(aString.toInt(), expected); }
aString и expected являются переменными в стеке, которые инициализируются текущими тестовыми данными.
Замечание: Этот макрос может использоваться только в тестовых функциях, которые вызываются тестовой платформой. У тестовой функции должна быть функция _data.
Макрос QSKIP() останавливает выполнение теста без добавления неудачи в журнал теста. Вы можете использовать его для пропуска тестов, нецелесообразных в текущей конфигурации. Текст описания description добавляется к журналу теста и должен содержать объяснение, почему тест не может быть выполнен. Режим mode - это QTest::SkipMode и описывает, необходимо ли продолжать с остальными тестовыми данными или нет.
Замечание: Этот макрос может использоваться только в тестовых функциях, которые вызываются тестовой платформой.
Пример:
if (!QSqlDatabase::drivers().contains("SQLITE")) QSKIP("This test requires the SQLITE database driver", SkipAll);
Смотрите также QTest::SkipMode.
QTEST() является вспомогательным макросом для QCOMPARE() и сравнивает фактическое значение actual с элементом testElement из тестовых данных. Если такого элемента нет, то тест аварийно завершается по assert.
За исключением этого QTEST() ведёт себя так же, как и QCOMPARE().
Вместо записи:
QFETCH(QString, myString); QCOMPARE(QString("hello").toUpper(), myString);
вы можете написать:
QTEST(QString("hello").toUpper(), "myString");
Смотрите также QCOMPARE().
Реализует функцию main(), которая выполняет все тесты в TestClass.
Ведёт себя похоже на QTEST_MAIN(), но не создаёт экземпляр объекта QApplication. Используйте этот макрос для очень простых автономных тестов без графического пользовательского интерфейса.
Смотрите также QTEST_MAIN().
Реализует функцию main(), которая создаёт объект QApplication и TestClass и выполняет все тесты в порядке их определения. Используйте этот макрос для создания автономных исполняемых файлов.
Замечание: На платформах, в которых навигация с клавиатуры включена по умолчанию (например: Symbian), этот макрос будет принудительно отключать её для упрощения использования событий клавиатуры при создании автотестов. Если вы хотите написать тестовый сценарий, который использует навигацию с клавиатуры, то вы должны включить ее в функциях initTestCase() или init() вашего тестового сценария.
Пример:
class TestQString: public QObject { ... }; QTEST_MAIN(TestQString)
Смотрите также QTEST_APPLESS_MAIN(), QTest::qExec() и QApplication::setNavigationMode().
Реализует функцию main() с тестовым классом, который абсолютно ничего не делает. Используйте этот макрос для создания тестов, которые производят корректный вывод теста, но только не выполняют никакого теста, например, в условных выражениях:
#ifdef Q_WS_X11
QTEST_MAIN(MyX11Test)
#else
// ничего не делать на не X11-платформах
QTEST_NOOP_MAIN
#endif
Смотрите также QTEST_MAIN().
Максро QVERIFY2() ведёт себя точно так же, как и QVERIFY(), за исключением того, что он выводит подробное сообщение message при ложном условии condition. Сообщение message является простой C-строкой.
Пример:
QVERIFY2(1 + 1 == 2, "A breach in basic arithmetic occured.");
Смотрите также QVERIFY() и QCOMPARE().
Макрос QVERIFY() проверяет, является ли условие condition или нет. Если оно равно true, выполнение продолжается. Если нет, то в журнал теста записывается неудача, а тест далее не выполняется.
Замечание: Этот макрос может использоваться только в тестовых функциях, которые вызываются тестовой платформой.
Пример:
QVERIFY(1 + 1 == 2);
Смотрите также QCOMPARE().
Добавляет сообщение message как предупреждение в журнал теста. Этот макрос может использоваться в любом месте ваших тестов.
Замечание: Эта функция потокобезопасна.
Авторские права © 2010 Nokia Corporation и/или её дочерние компании | Торговые марки | Qt 4.6.4 |
Попытка перевода Qt документации. Если есть желание присоединиться, или если есть замечания или пожелания, то заходите на форум: Перевод Qt документации на русский язык... Люди внесшие вклад в перевод: Команда переводчиков |