DUnit тестирует иерархию - PullRequest
       29

DUnit тестирует иерархию

13 голосов
/ 16 января 2012

В настоящее время я использую двухуровневую иерархию тестов в DUnit (Тестовый проект -> Тестовый пример -> Метод тестирования; см. Пример ниже).Можно ли ввести 3-й уровень или даже больше уровней?

DUnit Example

Ответы [ 3 ]

11 голосов
/ 17 января 2012

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

initialization

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

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

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

Example DUnit Test Hierarchy

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

9 голосов
/ 16 января 2012

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

Модуль TestFramework предоставляет класс TTestSuite, который реализует наборы тестов, поэтому вы можете создавать иерархии тестов, используя более явныеcode:

Следующая функция, 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 вы увидите новую иерархию.

3 голосов
/ 16 января 2012

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

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

...