Как я могу отключить Dunit Tests по имени программно?

StackOverflow https://stackoverflow.com/questions/4279127

  •  28-09-2019
  •  | 
  •  

Вопрос

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

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

Это было полезно?

Решение

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

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;

Пример использования (TSTringList 'исключает »создается в методе установки):

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;
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top