13

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

DUnit 示例

4

3 回答 3

11

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

initialization

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

  RegisterTests('Group1\Group3', [TExampleTests3.Suite,
                                  TExampleTests4.Suite]);
end.

最后我得到这样的东西:

示例 DUnit 测试层次结构

比使用 David 的方式少了很多乱七八糟的东西,并且您可以将您的组定义分布在不同的单元中。

于 2012-01-17T02:18:45.030 回答
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;

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

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

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

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

initialization    
  RegisterTest('Simple Test', UnitTests);
end.

使用 运行时GUITestRunner,您将看到新的层次结构。

于 2012-01-16T10:44:23.250 回答
3

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

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

于 2012-01-16T10:44:42.913 回答