如何通过编程方式按名称禁用地铁测试?
-
28-09-2019 - |
题
对于集成测试,我创建了一个DUNIT测试套件,该套件可为每个版本的第三方组件(消息代理)运行一次。不幸的是,某些测试总是失败,因为在测试组件的某些版本中有已知错误。
这意味着测试套件将永远不会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