21.07.2014, 18:52 | |
Что это такое Однажды захотелось мне попробовать использовать один из основных принципов экстремального программирования - "Пиши тесты раньше программы", скачал, значит, CppUnit (аналог JUnit). Попробовал все скомпилировать под Visual C++ - вроде бы все прошло без проблем. Ну, думаю, ладно, теперь должно все быть хорошо и под Visual C++ 7.0 (все-таки в 6-ке ошибок побольше будет). Однако получился облом - куча ошибок при линковке самих библиотек да и скомпилированные у меня что-то не захотели работать. Правда, если честно, я и не особо настаивал, т.к. уже давно хотелось написать свой UnitTest - просто из интереса, не особо навороченный. Ну а тут уж такой повод появился :) Так и появился этот небольшой проект под названием CTinyTester. Основные требования к тестеру были такие:
Конечно, на мощь CppUnit я не претендую, но какой-то минимум сделать хотелось. Внутренняя реализация классов очень простая и вы можете сами все посмотреть. Я буду описывать, в основном то, как этими классами пользоваться. Комментарии в исходниках оформлены специально для программы doxygen. Документация, которая была сгенерирована этой замечательной программкой в формате chm вы можете скачать здесь. Основные классы Все классы объединены в пространство имен tut (от слов Tiny Unit Test). В этом проекте содержатся два основных класса:
tut::CTinyTester - это основа всех тестов. Именно в нем содержатся все методу, которые можно назвать тестами. Подробности чуть попозже. CTestLog Итак, в первую очередь вы должны создать класс, производный от CTestLog. CTestLog - это базовый класс для классов, которые представляют результаты тестирования в какой-либо форме (далее я их буду называть логеры или просто логи). Сам CTestLog абстрактный, поэтому надо будет делать классы производные от него. Например, в архиве лежит класс CTextLog, он записывает результаты тестов в текстовый файл. С ним познакомимся попозже. Основные методы класса CTestLog описаны в документации. В двух словах о их можно сказать так:
Все вышесказанное вам понадобится, если вы захотите сделать свой логер. Как пример логера я включил в архив CTextLog - логер, который пишет результаты в обычный текстовый файл наподобие . Его описание также есть в документации. Скажу только, что для его создания надо передать в конструктор имя файла, в который будет писать логер. CTinyTester А это основа всех тестов. Именно в его методах и проходят тесты. Вам нужно создать класс, производный от CTinyTester и переопределить в нем чисто виртуальную функцию void TestBody(); Она должна быть защищенной (protected). Именно в ней и происходят тесты. Методы для тестирования вы можете посмотреть в документации (их немного), найдя в разделе "Группы" подраздел "Собственно сами тесты". А макросы для тестирования исключений, описаны в подразделе "Макросы, предназначенные для отладки исключений". То есть в переопределенном методе TestBody() вы используете эти методы и макросы для составления тестов. К самим классам в архиве прилагается пример тестирования класса для работы с реестром, там вы можете посмотреть все это на примере. Итого Типичная функция main() для тестирования может выглядеть следующим образом (взято из примера): int APIENTRY WinMain(HINSTANCE hInstance, return 0; #include "Registry\RegistryReader.h" using reg::CRegistryReader; class CRegTester : public tut::CTinyTester // Тестирование класса для записи // Тестирование класса для чтения // Тестирование класса для быстрого доступа protected: TestReader(); #include "Registry\RegistryReader.h" using reg::CRegistryReader; class CMyTester : public tut::CTinyTester protected: | |
Размер: | Категория: Исходники на C++ | Добавил: SibDes
| Теги:
| |
Просмотров: 792 | Загрузок: 0 | Рейтинг: 0.0/0 |
Похожие материалы
Всего комментариев: 0 | |