【发布时间】:2012-02-11 07:31:17
【问题描述】:
目前我在 DUnit 中使用 2 级测试层次结构(测试项目 -> 测试用例 -> 测试方法;参见下面的示例)。是否可以引入第三级甚至更多级?
【问题讨论】:
目前我在 DUnit 中使用 2 级测试层次结构(测试项目 -> 测试用例 -> 测试方法;参见下面的示例)。是否可以引入第三级甚至更多级?
【问题讨论】:
我通过在“SuitePath”中添加反斜杠来构建层次结构。例如:
initialization
RegisterTests('Group1\Group2', [TExampleTests1.Suite,
TExampleTests2.Suite]);
RegisterTests('Group1\Group3', [TExampleTests3.Suite,
TExampleTests4.Suite]);
end.
最后我得到了这样的结果:
比大卫的方式少了很多乱七八糟的东西,而且您可以将您的组定义分散到不同的单位。
【讨论】:
您可以使用测试套件创建任意多级别的嵌套。 documentation 提供以下示例:
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运行时,您将看到新的层次结构。
【讨论】:
RegisterTest('Simple.Test', UnitTests); 时,它将创建 Simple 作为节点,并将 Test 作为测试层次结构中的子节点。非常好的功能,可以将不同单元中的测试分组到相同的功能名称下。
您可以在可以嵌套的测试套件中对相关测试进行分组。
如果您想在运行时执行此操作,请查看我的“开放组件测试框架 (OpenCTF)”sourceforge。
【讨论】: