zoukankan      html  css  js  c++  java
  • [笔记] Delphi使用DUnitX做单元测试的简单例子

    Delphi XE 提供了对DUnitX的支持,记录一个最简例子。

    首先创建项目A,然后创建单元untCalc,代码如下:

    unit untCalc;
    
    interface
    
    type
      TCalc = class(TObject)
      public
        class function Add(a, b: Integer): Integer;
        function Mul(a, b: Integer): Integer;
      end;
    
    implementation
    
    { TCalc }
    
    class function TCalc.Add(a, b: Integer): Integer;
    begin
      Result := a + b;
    end;
    
    function TCalc.Mul(a, b: Integer): Integer;
    begin
      Result := a * b;
    end;
    
    end.
    

    为了体现多样性,Add函数是类函数,Mul函数是普通函数。

    然后在主菜单中选择新建/DUnitX,选择DUnitX Project,按需勾选即可创建一个DUnitX的测试项目。

    重命名测试代码文件untCalcTest内容如下:

    unit untCalcTest;
    
    interface
    
    uses
      DUnitX.TestFramework, untCalc;
    
    type
    
      [TestFixture]
      TClacTest = class
      protected
        class var FCalc: TCalc;
      public
        [Setup]
        procedure Setup;
    
        [TearDown]
        procedure TearDown;
    
        [Test]
        [TestCase('正数相加', '1|2|3', '|')]
        [TestCase('负数相加', '-1,-2,-3')]
        procedure TestAdd(const a, b, c: Integer);
    
        [Test]
        [Ignore('需要重新修改')]
        procedure TestMul(const a, b, c: Integer);
      end;
    
    implementation
    
    procedure TClacTest.Setup;
    begin
      FCalc := TCalc.Create;
    end;
    
    procedure TClacTest.TearDown;
    begin
      FCalc.Free;
    end;
    
    procedure TClacTest.TestAdd(const a, b, c: Integer);
    begin
      Assert.AreEqual(TCalc.Add(a, b), c);
    end;
    
    procedure TClacTest.TestMul(const a, b, c: Integer);
    begin
      Assert.AreEqual(FCalc.Mul(a, b), c);
    end;
    
    initialization
    
    TDUnitX.RegisterTestFixture(TClacTest);
    
    end.
    

    上面代码可以看到,Setup是开始时的初始化,TearDown是退出时的处理。
    可以通过在函数声明部分添加属性的方式添加简单的测试用例,参数默认是逗号分隔,放在字符串中,如果使用了其他分隔符(如"|"),需要在后面添加分隔符作为参数。
    Ignore表示跳过这个测试项。

    运行结果如下:

    **********************************************************************
    *        DUnitX - (c) 2015-2018 Vincent Parrett & Contributors       *
    *                                                                    *
    *        License - http://www.apache.org/licenses/LICENSE-2.0        *
    **********************************************************************
    
      Fixture : untCalcTest
      -------------------------------------------------
         Fixture : untCalcTest.TClacTest
         -------------------------------------------------
           Test : untCalcTest.TClacTest.TestAdd.正数相加
           -------------------------------------------------
           Running Setup for : TestAdd.正数相加
    
           Executing Test : TestAdd.正数相加
    
    
            Running Teardown for Test : TestAdd.正数相加
    
             Success.
    
           Test : untCalcTest.TClacTest.TestAdd.负数相加
           -------------------------------------------------
           Running Setup for : TestAdd.负数相加
    
           Executing Test : TestAdd.负数相加
    
    
            Running Teardown for Test : TestAdd.负数相加
    
             Success.
    
           Test : untCalcTest.TClacTest.TestMul
           -------------------------------------------------
             Test Ignored : TestMul : 需要重新修改
    
          Running Fixture Teardown Method : Destroy
    
    
    
    Done testing.
    Tests Found   : 3
    Tests Ignored : 1
    Tests Passed  : 2
    Tests Leaked  : 0
    Tests Failed  : 0
    Tests Errored : 0
    Done.. press <Enter> key to quit
    

    接着修改一处测试用例,故意让测试失败,修改如下:

    [TestCase('正数相加', '1|2|4', '|')]
    

    运行结果如下:

    **********************************************************************
    *        DUnitX - (c) 2015-2018 Vincent Parrett & Contributors       *
    *                                                                    *
    *        License - http://www.apache.org/licenses/LICENSE-2.0        *
    **********************************************************************
    
      Fixture : untCalcTest
      -------------------------------------------------
         Fixture : untCalcTest.TClacTest
         -------------------------------------------------
           Test : untCalcTest.TClacTest.TestAdd.正数相加
           -------------------------------------------------
           Running Setup for : TestAdd.正数相加
    
           Executing Test : TestAdd.正数相加
    
    
            Running Teardown for Test : TestAdd.正数相加
    
             Test failed : TestAdd.正数相加 : Expected 3 but got 4
    
           Test : untCalcTest.TClacTest.TestAdd.负数相加
           -------------------------------------------------
           Running Setup for : TestAdd.负数相加
    
           Executing Test : TestAdd.负数相加
    
    
            Running Teardown for Test : TestAdd.负数相加
    
             Success.
    
           Test : untCalcTest.TClacTest.TestMul
           -------------------------------------------------
             Test Ignored : TestMul : 需要重新修改
    
          Running Fixture Teardown Method : Destroy
    
    
    
    Done testing.
    Tests Found   : 3
    Tests Ignored : 1
    Tests Passed  : 1
    Tests Leaked  : 0
    Tests Failed  : 1
    Tests Errored : 0
    
    Failing Tests
    
      untCalcTest.TClacTest.TestAdd.正数相加
      Message: Expected 3 but got 4
    
    
    Done.. press <Enter> key to quit.
    

    可见,错误之处被显示了出来。

    以上只是最简的例子,更多的功能按需挖掘吧。

  • 相关阅读:
    redis的两种安装方法
    http头部信息
    软件测试技术知识
    github使用
    3 python之基础概要
    2 Python之编程语言介绍及变量
    1 Python入门及计算机硬件知识
    Linux常用命令
    CMDB小练习
    CMDB和运维自动化
  • 原文地址:https://www.cnblogs.com/journeyonmyway/p/11831256.html
Copyright © 2011-2022 走看看