Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/59.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Delphi 如何以编程方式按名称禁用DUnit测试?_Delphi_Unit Testing_Dunit - Fatal编程技术网

Delphi 如何以编程方式按名称禁用DUnit测试?

Delphi 如何以编程方式按名称禁用DUnit测试?,delphi,unit-testing,dunit,Delphi,Unit Testing,Dunit,对于集成测试,我创建了一个DUnit测试套件,它对第三方组件(MessageBroker)的每个版本运行一次。不幸的是,一些测试总是失败,因为在某些版本的测试组件中存在已知的bug 这意味着测试套件永远不会100%完成。但是,对于自动测试,需要100%的成功分数。DUnit没有提供现成的方法来按名称禁用测试套件中的测试。我编写了一个过程,该过程获取测试套件和测试名称列表,禁用具有匹配名称的所有测试,并对嵌套测试套件执行递归 procedure DisableTests(const ATest:

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


这意味着测试套件永远不会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;

顺便说一句,我想看看你如何注册你的测试,以及你如何在你的测试用例中获得每个特定测试套件的组件引用。也许OpenCTF(Delphi的开放组件测试框架)给出了一些想法,它为每个组件生成单元测试套件并验证它们的属性-非常好!实际上我也需要这个。
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;