【问题标题】:DUnit tests hierarchyDUnit 测试层次结构
【发布时间】:2012-02-11 07:31:17
【问题描述】:

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

【问题讨论】:

    标签: delphi dunit


    【解决方案1】:

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

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

    最后我得到了这样的结果:

    比大卫的方式少了很多乱七八糟的东西,而且您可以将您的组定义分散到不同的单位。

    【讨论】:

      【解决方案2】:

      您可以使用测试套件创建任意多级别的嵌套。 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 运行时,您将看到新的层次结构。

      【讨论】:

      • @Serg 您还可以在注册测试的名称中添加点,DUnit 将为每个点添加一个级别。例如,当您执行 RegisterTest('Simple.Test', UnitTests); 时,它将创建 Simple 作为节点,并将 Test 作为测试层次结构中的子节点。非常好的功能,可以将不同单元中的测试分组到相同的功能名称下。
      • @Marjan +1 这很酷,不知道。我感觉 DUnit 中有很多不为人知的强大功能。
      • @DavidHeffernan 是的,也是偶然发现了这个小宝石 :-)
      • DUnit 唯一可悲的是,它的“主干”现在仅适用于 Delphi 2007 及更高版本 - 因此对于旧版本的 Delphi,需要单独的(旧)版本。
      • @mjn:那是一次无意间断。管理员很忙,所以修复它需要很长时间,但目的是它可以通过 Delphi 7 恢复。
      【解决方案3】:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-04-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多