Как я могу отключить тесты DUnit по имени программно? - PullRequest
3 голосов
/ 25 ноября 2010

Для интеграционных тестов я создал набор тестов DUnit, который запускается один раз для каждой версии стороннего компонента (брокера сообщений). К сожалению, некоторые тесты всегда терпят неудачу из-за известных ошибок в некоторых версиях тестируемого компонента.

Это означает, что тестовые наборы никогда не будут завершены на 100%. Для автоматизированных тестов, однако, 100% успеха требуется. DUnit не предлагает готовый метод для отключения тестов в наборе тестов по имени.

1 Ответ

6 голосов
/ 25 ноября 2010

Я написал процедуру, которая принимает набор тестов и список имен тестов, отключает все тесты с совпадающим именем, а также выполняет рекурсию во вложенные наборы тестов.

procedure DisableTests(const ATest: ITest; const AExclude: TStrings);
var
  I: Integer;
begin
  if AExclude.IndexOf(ATest.Name) <> -1  then
  begin
    ATest.Enabled := False;
  end;
  for I := 0 to ATest.Tests.Count - 1 do
  begin
    DisableTests(ATest.Tests[I] as ITest, AExclude);
  end
end;

Пример использования (список TString ‘Exclude’ создается в методе Setup):

procedure TSuiteVersion1beta2.SetUp;
begin
  // fill test suite
  inherited;

  // exclude some tests because they will fail anyway
  Excludes.Add('TestA');
  Excludes.Add('TestB');

  DisableTests(Self, Excludes);
end;
...