Хочу уточнить порядок тестирования в CppUnit. Согласно моим исследованиям, порядок тестирования зависит от компилятора или компоновщика и от того, как они находили файлы.
Как указать зависимости в CppUnit?
Например, давайте рассмотрим класс прямоугольников с четырьмя линиями. Каждая строка содержит два класса точек. Предположим, что каждый класс находится в отдельном модуле или единице перевода.
struct Point
{
int x;
int y;
};
struct Line
{
Point a;
Point b;
};
struct Rectangle
{
Line top;
Line left;
Line right;
Line bottom;
};
В приведенном выше коде сначала следует протестировать класс Point, затем класс Line и, наконец, класс Rectangle. Нет причин тестировать класс Rectangle, если у классов Line или Point есть проблемы. Это очень упрощенный пример.
Для составных классов сначала следует тестировать внутренние классы или классы типов данных-членов.
Предположим, что с каждым классом связан класс тестирования. Каждый тестовый класс имеет свои собственные опубликованные тестовые методы (которые зарегистрированы в списке CppUnit) в отдельных файлах. Класс для тестирования Lines не знает класса тестирования для баллов; и аналогично для прямоугольника. Когда эти классы тестовых примеров компилируются, их порядок зависит от компилятора и компоновщика.
Итак, как упорядочить тестовые примеры?
К вашему сведению, я использую CppUnit, wxTestRunner и Visual Studio 2008