Как я могу отключить Dunit Tests по имени программно?
-
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;
Не связан с StackOverflow