Delphi DUnit测试层次结构

Delphi DUnit测试层次结构,delphi,dunit,Delphi,Dunit,目前我正在DUnit中使用两级测试层次结构(测试项目->测试用例->测试方法;参见下面的示例)。是否可以引入第三级或更多级别 您可以使用测试套件创建任意多个嵌套级别。提供了以下示例: TestFramework单元公开了TTestSite类,即 实现测试套件,因此您可以使用更多 显式代码: 下面的函数,UnitTests,创建一个测试套件并添加 它有两个测试类: function UnitTests: ITestSuite; var ATestSuite: TTestSuite; beg

目前我正在DUnit中使用两级测试层次结构(测试项目->测试用例->测试方法;参见下面的示例)。是否可以引入第三级或更多级别


您可以使用测试套件创建任意多个嵌套级别。提供了以下示例:

TestFramework
单元公开了
TTestSite
类,即 实现测试套件,因此您可以使用更多 显式代码:

下面的函数,
UnitTests
,创建一个测试套件并添加 它有两个测试类:

function UnitTests: ITestSuite; 
var
  ATestSuite: TTestSuite; 
begin 
  ATestSuite := TTestSuite.create('Some trivial tests'); 
  ATestSuite.addTest(TTestArithmetic.Suite); 
  ATestSuite.addTest(TTestStringlist.Suite);  
  Result := ATestSuite; 
end;
实现上述功能的另一种方法是:

function UnitTests: ITestSuite; 
begin
  Result := TTestSuite.Create(
    'Some trivial tests',
    [TTestArithmetic.Suite, TTestStringlist.Suite]
  );
end;
在上面的示例中,
TTestSite
构造函数将传递的数组中的测试添加到 套房

您可以通过以下方式注册以上述任何方式创建的测试套件: 使用与注册单个测试用例相同的调用:

initialization    
  RegisterTest('Simple Test', UnitTests);
end.
使用
GUITestRunner
运行时,您将看到新的层次结构


可以在测试套件中对相关测试进行分组,测试套件可以嵌套


如果您想在运行时执行此操作,请查看我的“开放组件测试框架(OpenCTF)”。

我通过在“SuitePath”中添加反斜杠来构建层次结构。例如:

initialization

  RegisterTests('Group1\Group2', [TExampleTests1.Suite,
                                  TExampleTests2.Suite]);

  RegisterTests('Group1\Group3', [TExampleTests3.Suite,
                                  TExampleTests4.Suite]);
end.
最后我得到了这样的结果:


与David的方法相比,您可以减少混乱,您可以将组定义分散到不同的单元。

@Serg您还可以在注册测试的名称中添加点,DUnit将为每个点添加一个级别。例如,当您执行
RegisterTest('Simple.Test',UnitTests)时它将创建简单节点,并将测试作为测试层次结构中该节点的子节点。在同一个功能名称下对不同单元中的测试进行分组的功能非常好。@Marjan+1这很酷,我不知道。我有一种感觉,DUnit有很多不为人所知的力量。@DavidHeffernan yep,也偶然发现了这个小宝石:-)DUnit唯一令人伤心的是,它的“主干”现在只适用于Delphi 2007和更新版本-所以对于Delphi的旧版本,需要一个单独的(旧)版本。@mjn:这是一个无意的突破。管理员们很忙,所以修复它需要很长时间,但目的是通过Delphi7恢复工作。