如何通过编程方式禁用DUnit测试?

时间:2010-11-25 16:30:22

标签: delphi unit-testing dunit

对于集成测试,我创建了一个DUnit测试套件,它为每个版本的第三方组件(消息代理)运行一次。不幸的是,由于测试组件的某些版本中存在已知错误,因此某些测试总是失败。

这意味着测试套件永远不会以100%完成。但是,对于自动化测试,需要100%的成功分数。 DUnit没有提供现成的方法来按名称禁用测试套件中的测试。

1 个答案:

答案 0 :(得分:6)

我编写了一个过程,该过程采用测试套件和测试名称列表,禁用所有具有匹配名称的测试,并执行嵌套测试套件的递归。

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;

示例用法(在Setup方法中创建TStringlist'Excludes'):

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;