[Содержание] [Следующая: Глава 2]
Глава 1: Разработка модульного теста
Файлы:
В этой главе мы увидим, как написать простой модульный тест для класса и как его выполнить.
Написание теста
Предположим, вы хотите проверить поведение нашего класса QString. Для начала вам нужен класс, содержащий тестовые функции. Этот класс должен наследоваться от QObject:
#include <QtTest/QtTest>
class TestQString: public QObject
{
Q_OBJECT
private slots:
void toUpper();
};
Заметьте, что вам необходимо подключить заголовочный файл QTest, и что тестовые функции должны быть объявлены как закрытые слоты, таким образом тестовая платформа находит и выполняет их.
Затем вам необходимо реализовать саму тестовую функцию. Реализация может выглядеть следующим образом:
void TestQString::toUpper()
{
QString str = "Hello";
QVERIFY(str.toUpper() == "HELLO");
}
Макрос QVERIFY() вычисляет выражение, переданное как его аргумент. Если выражение истинно, то выполнение тестовой функции продолжается. В противном случае сообщение, описывающее отказ, добавляется к журналу теста, и тестовая функция прекращает выполнение.
Если же вам нужен более подробный вывод в журнал теста, то вы должны использовать вместо этого макрос QCOMPARE():
void TestQString::toUpper()
{
QString str = "Hello";
QCOMPARE(str.toUpper(), QString("HELLO"));
}
Если строки не равны, то содержимое обоих строк добавляется к журналу теста, что позволяет сразу увидеть, почему сравнение дало ошибку.
Наконец, чтобы сделать наш тест автономной исполняемой программой, необходимы следующие две строки:
QTEST_MAIN(TestQString)
#include "testqstring.moc"
Макрос QTEST_MAIN() заменяется на простой метод main(), запускающий все тестовые функции. Заметьте, что если и объявление, и реализация вашего тестового класса находятся в .cpp-файле, то вам также необходимо подключить сгенерированный moc-файл, чтобы заработал самоанализ Qt.
Выполнение теста
Теперь, когда мы закончили писать наш тест, мы хотим его выполнить. Будем считать, что наш тест был сохранён как testqstring.cpp в пустом каталоге: мы соберем тест при помощи qmake, создав файл проекта и сгенерировав make-файл.
/myTestDirectory$ qmake -project "CONFIG += qtestlib"
/myTestDirectory$ qmake
/myTestDirectory$ make
Замечание: Если вы используете Windows, замените make на nmake или на тот инструмент, который вы используете.
Запуск получившегося исполняемого файла должен вывести на консоль следующее:
********* Start testing of TestQString *********
Config: Using QTest library 4.6.4, Qt 4.6.4
PASS : TestQString::initTestCase()
PASS : TestQString::toUpper()
PASS : TestQString::cleanupTestCase()
Totals: 3 passed, 0 failed, 0 skipped
********* Finished testing of TestQString *********
Поздравляем! Вы только что написали и выполнили ваш первый модульный тест при помощи QTestLib.
[Содержание] [Следующая: Глава 2]
Авторские права © 2010 Nokia Corporation и/или её дочерние компании |
Торговые марки |
Qt 4.6.4 |
|