В настоящее время я использую двухуровневую тестовую иерархию в DUnit (Test Project → Test Case → Test method, см. пример ниже). Возможно ли ввести уровень 3-го или более уровня?
В настоящее время я использую двухуровневую тестовую иерархию в DUnit (Test Project → Test Case → Test method, см. пример ниже). Возможно ли ввести уровень 3-го или более уровня?
Вы можете использовать набор тестов для создания как можно большего количества уровней гнездования. Документация предлагает следующий пример:
Блок
TestFramework
предоставляет классTTestSuite
, класс, который реализует тестовые пакеты, поэтому вы можете создавать тестовые иерархии, используя больше явный код:Следующая функция
UnitTests
создает набор тестов и добавляет два тестовых класса:function UnitTests: ITestSuite; var ATestSuite: TTestSuite; begin ATestSuite := TTestSuite.create('Some trivial tests'); ATestSuite.addTest(TTestArithmetic.Suite); ATestSuite.addTest(TTestStringlist.Suite); Result := ATestSuite; end;
Еще один способ реализовать вышеприведенную функцию:
function UnitTests: ITestSuite; begin Result := TTestSuite.Create( 'Some trivial tests', [TTestArithmetic.Suite, TTestStringlist.Suite] ); end;
В приведенном выше примере конструктор
TTestSuite
добавляет тесты в переданном массиве к люкс.Вы можете зарегистрировать набор тестов, созданный любым из указанных способов используя тот же вызов, который вы используете для регистрации отдельных тестовых случаев:
initialization RegisterTest('Simple Test', UnitTests); end.
При запуске с
GUITestRunner
вы увидите новую иерархию.
Я создаю иерархию, помещая обратную косую черту в `SuitePath '. Например:
initialization
RegisterTests('Group1\Group2', [TExampleTests1.Suite,
TExampleTests2.Suite]);
RegisterTests('Group1\Group3', [TExampleTests3.Suite,
TExampleTests4.Suite]);
end.
В конце я получаю что-то вроде этого:
Гораздо меньше, чем с Дэвидом, и вы можете распространять свои определения групп в разных единицах.
Вы можете группировать связанные тесты в наборах тестов, которые могут быть вложены.
Если вы хотите сделать это во время выполнения, проверьте мою "Open Component Test Framework (OpenCTF)" на sourceforge.