目前我在DUnit中使用2级测试层次结构(测试项目 - >测试用例 - >测试方法;参见下面的示例)。是否有可能引入第三级甚至更多级别?
答案 0 :(得分:11)
我通过在'SuitePath'中添加反斜杠来构建层次结构。例如:
initialization
RegisterTests('Group1\Group2', [TExampleTests1.Suite,
TExampleTests2.Suite]);
RegisterTests('Group1\Group3', [TExampleTests3.Suite,
TExampleTests4.Suite]);
end.
最后我得到了这样的话:
比大卫的方式少得多,你可以在不同的单位上传播你的小组定义。
答案 1 :(得分:9)
您可以使用测试套件创建任意级别的嵌套。 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
运行时,您将看到新的层次结构。
答案 2 :(得分:3)
您可以在测试套件中对相关测试进行分组,这些测试可以嵌套。
如果您想在运行时执行此操作,请在sourceforge查看我的“开放组件测试框架(OpenCTF)”。