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.
可见,错误之处被显示了出来。
以上只是最简的例子,更多的功能按需挖掘吧。