[笔记] 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.

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

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

上一篇:单元测试和自动化黑盒测试


下一篇:Pytest权威教程-更改标准(Python)测试发现