Тестовая Система предназначена для упрощения создания тестов, автоматического их запуска, и обработки результатов.
Каждый тест представляет собой функцию имеющую тип 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 (содержит непосредственный результат запуска)