Подтвердить что ты не робот

Иерархия тестов DUnit

В настоящее время я использую двухуровневую тестовую иерархию в DUnit (Test Project → Test Case → Test method, см. пример ниже). Возможно ли ввести уровень 3-го или более уровня?

DUnit Example

4b9b3361

Ответ 1

Вы можете использовать набор тестов для создания как можно большего количества уровней гнездования. Документация предлагает следующий пример:

Блок 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 вы увидите новую иерархию.

Ответ 2

Я создаю иерархию, помещая обратную косую черту в `SuitePath '. Например:

initialization

  RegisterTests('Group1\Group2', [TExampleTests1.Suite,
                                  TExampleTests2.Suite]);

  RegisterTests('Group1\Group3', [TExampleTests3.Suite,
                                  TExampleTests4.Suite]);
end.

В конце я получаю что-то вроде этого:

Example DUnit Test Hierarchy

Гораздо меньше, чем с Дэвидом, и вы можете распространять свои определения групп в разных единицах.

Ответ 3

Вы можете группировать связанные тесты в наборах тестов, которые могут быть вложены.

Если вы хотите сделать это во время выполнения, проверьте мою "Open Component Test Framework (OpenCTF)" на sourceforge.