DUnit测试层次结构

klu*_*udg 13 delphi dunit

目前我在DUnit中使用2级测试层次结构(测试项目 - >测试用例 - >测试方法;参见下面的示例).是否有可能引入第三级甚至更多级别?

DUnit示例

Nat*_*Nat 11

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

initialization

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

  RegisterTests('Group1\Group3', [TExampleTests3.Suite,
                                  TExampleTests4.Suite]);
end.
Run Code Online (Sandbox Code Playgroud)

最后我得到这样的东西:

示例DUnit测试层次结构

与大卫的方式相比,可以减少很多东西,你可以在不同的单位上传播你的群体定义.


Dav*_*nan 9

您可以使用测试套件创建任意级别的嵌套.该文档提供以下示例:

TestFramework单元公开了TTestSuite类,即实现测试套件的类,因此您可以使用更明确的代码创建测试层次结构:

以下函数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;
Run Code Online (Sandbox Code Playgroud)

实现上述功能的另一种方法是:

function UnitTests: ITestSuite; 
begin
  Result := TTestSuite.Create(
    'Some trivial tests',
    [TTestArithmetic.Suite, TTestStringlist.Suite]
  );
end;
Run Code Online (Sandbox Code Playgroud)

在上面的示例中,TTestSuite构造函数将传递的数组中的测试添加到套件中.

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

initialization    
  RegisterTest('Simple Test', UnitTests);
end.
Run Code Online (Sandbox Code Playgroud)

运行时GUITestRunner,您将看到新的层次结构.

  • @Serg您还可以在注册测试的名称中添加点,DUnit将为每个点添加一个级别.例如,当你执行`RegisterTest('Simple.Test',UnitTests);`它将创建Simple作为节点,并将Test作为测试层次结构中的子节点.非常好的功能,在同一功能名称下对不同单元中的测试进行分组. (6认同)