Назначение Тестовой Системы

Тестовая Система предназначена для упрощения создания тестов, автоматического их запуска, и обработки результатов.

Написание тестов

Каждый тест представляет собой функцию имеющую тип TestResult (*FTestFunction)(void).

Тестовая Система позволяет регистрировать тесты-функции. При регистрации, кроме самой функции, указывается дополнительная информация: строка с именем тестируемой функции, строка с именем класса к которому эта функция принадлежит, строка с кратким описанием теста.

Для упрощения написания и регистрации тестов Тестовая Система содержит макрос TEST(className, functionName, description), используемый для объявления и регистрации теста-функции. Он создает функцию

TestResult t_className_functionName(),

и затем регистрирует ее следующим образом

static bool t_className_functionName_value = CTestCollection::registerTest(t_className_functionName, className, functionName, description);

Существуют, также, упращенные макросы:

Рассмотрим простой пример теста для функции gcd из библиотеки Arageli:

#include "ts/ts.h"
#include "arageli/arageli.hpp"

using namespace Arageli;

TEST_FUNCTION(gcd)
{
    int a = 8; 
    int b = 64; 
    int g = gcd(a, b); 
    if (0 != a%g || 0 != b%g) 
    { 
        tout << "GCD fails with" << " gcd( " << a << ", " << b << ") = " << g << "\n";
        return resFAIL; 
    } 
    return resOK;
}

Как мы можем видеть написание теста пердельно просто.

В начале файла должно стоять включение заголовочного файла ts/ts.h. За ним должны идти остальные, необходимые тесту, заголовочные файлы и, далее, нужно написать саму функцию теста. Для вывода результатов теста (плохих или хороших) необходимо пользоваться потоком tout, определенным в Тестовой Системе.

Запуск

Тестовая Система имеет следующие опции командной строки:
--help: help message
--c arg: class name
--f arg: function name

Опции --c и --f позволяют выбирать тесты для запуска. Параметр arg пердставляет собой регулярное выражение.

Например, выполнение команды tests.exe --c .*polynom.* --f .*mul.* повлечет за собой запуск всех функций, содержащих в своем имени подстроку "mul" из всех классов, содержащих в своем имени подстроку "polynom".

Просмотр результатов

Результаты запуска выводятся в стандартный поток вывода и представляют из себя фрагмент XML (http://whttp://www.w3c.org/XML/ )  данных.

Если воспользоваться скриптом ./build/run_tests.bat (при этом текущей директорией должна быть ./build) то будет запущен файл ./bin/tests.exe, результаты будут сохранены в ./status и могут быть просмотрены открытием файла ./status/tests.html (при наличии библиотеки Xalan (http://xml.apache.org/xalan-c/) , которая его генерирует) или ./status/tests.xml (Internet Explorer поддерживает XSLT (http://www.w3.org/Style/XSL/)) или ./status/tests.log (содержит непосредственный результат запуска)