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.

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

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

[笔记] Delphi使用DUnitX做单元测试的简单例子的更多相关文章

  1. 持续集成之单元测试篇——WWH(讲讲我们做单元测试的故事)

    持续集成之单元测试篇--WWH(讲讲我们做单元测试的故事) 前言 临近上线的几天内非重大bug不敢进行发版修复,担心引起其它问题(摁下葫芦浮起瓢) 尽管我们如此小心,仍不能避免修改一些bug而引起更多 ...

  2. QML学习笔记(五)— 做一个简单的待做事项列表

    做一个简单的QML待做事项列表,能够动态添加和删除和编辑数据 GitHub:八至 作者:狐狸家的鱼 本文链接:QML学习笔记(五)— 做一个待做事项列表 主要用到QML:ListView 效果 全部代 ...

  3. 使用karma+jasmine做单元测试

    目的 使用karma和jasmine来配置自动化的js单元测试. Karma和Jasmine Karma是由Angular团队所开发的一种自动化测试工具.链接:http://karma-runner. ...

  4. 使用MS Test做单元测试

    声明:本篇博客翻译自:http://www.c-sharpcorner.com/article/unit-testing-with-ms-tests-in-c-sharp/ 写在翻译之前: 依然清晰的 ...

  5. PHPUnit单元测试的简单使用

    何为单元测试: 指对软件中的基本单元进行测试,如函数.方法等,以检查其返回值或行为是否符合预期:实际中软件是很复杂的,由许多组件构成,执行流程连贯在一起,要进行单元片段的测试,就需要为其提供执行上下文 ...

  6. 【学习笔记】C#中的单元测试

    周一老师讲完单元测试以后,感觉挺好玩,通过查资料和相关书籍学到了几种C#在VS2010的测试方法,跟大家分享下,图文并茂啊,有木有~~ 1.从被测试的代码中生成单元测试 1.1创建C#控制台程序,命名 ...

  7. 换种思路写Mock,让单元测试更简单

    开篇引入 单元测试中的Mock方法,通常是为了绕开那些依赖外部资源或无关功能的方法调用,使得测试重点能够集中在需要验证和保障的代码逻辑上.在定义Mock方法时,开发者真正关心的只有一件事:" ...

  8. spring junit 做单元测试,报 Failed to load ApplicationContext 错误

    spring junit 做单元测试,报 Failed to load ApplicationContext 错误. 查找了好一会,最后发现.@ContextConfiguration(locatio ...

  9. 使用python做你自己的自动化测试--对Java代码做单元测试 (2)-导入第三方jar包裹

    使用Jython对Java做单元测试,当然,为了测试开发java代码.这涉及到引入第三包的问题,如何导入第三方的包? 您可以使用http://blog.csdn.net/powerccna/artic ...

随机推荐

  1. 使用tomcat-maven-plugin自动化部署应用

    目标:将应用自动打包并自动部署到远程tomcat容器. 1.在pom.xml中添加plugin <plugin> <groupId>org.apache.tomcat.mave ...

  2. Beta冲刺版本第二天

    该作业所属课程:https://edu.cnblogs.com/campus/xnsy/SoftwareEngineeringClass2 作业要求地址:https://edu.cnblogs.com ...

  3. 【ios bug解决】 输入框聚焦时光标不显示

    解决办法:重写user-select样式 css:   user-select: text;-webkit-user-select:text;

  4. QTP(10)

    一.VBS语言基础 1.运算符和表达式 (1)运算符 (2)表达式 a.数学表达式:由算术运算符连接,计算结果为数字 b.字符串表达式:由字符串连接符连接,计算结果为字符串 c.条件表达式:由关系运算 ...

  5. 【u-boot】u-boot中initf_dm()函数执行流程(转)

    前部分设备模型初始化 为了便于阅读,删掉部分代码,只留关键的过程: static int initf_dm(void){    int ret;    ret = dm_init_and_scan(t ...

  6. 基于Hexo的个人博客搭建(上)

    没有废话,直接开始. 1. 环境配置 —1.1 node.js安装 https://nodejs.org/en/download/ 下载最新版本即可,然后无脑安装(除了选安装目录的时候),为了保证安装 ...

  7. CF888G Xor-MST[最小生成树+01trie]

    前注:关于这题,本人的解法暂时没有成功通过此题,原因是被卡常了.可能需要等待某种机缘来请人调试. 类似uoj的一道题(新年的繁荣),不过是一个有些简单的版本. 因为是完全图,有没有办法明显优化建边,所 ...

  8. mac 环境下Android 反编译源码

    mac环境下Android 反编译 一.需要的工具 apktool:反编译APK文件,得到classes.dex文件,同时也能获取到资源文件以及布局文件. dex2jar:将反编译后的classes. ...

  9. 关于Http协议,一片就够了

    转载:http://www.jianshu.com/p/80e25cb1d81a HTTP简介 HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于从 ...

  10. vue项目搭建和开发流程 vue项目配置ElementUI、jQuery和Bootstrap环境

    目录 一.VUE项目的搭建 1. 环境搭建 2. 项目的创建和启动 二. 开发项目 1. 配置vue项目启动功能 2. 开发vue项目 (1)项目文件的作用 (2)vue项目开发流程 (3)vue项目 ...