原文:http://www.cnblogs.com/sinojelly/archive/2010/05/22/1741646.html  
xUnit框架改变了单元测试的历史,一时间,很多语言的多种单元测试框架蜂涌而至。
发展至今,xUnit已经有很多年的历史了,炙手可热的JAVA测试框架JUnit也经历了JUnit2、JUnit3、JUnit4的发展历程,后来发展到了TestNG。身为中级语言的C/C++,虽然不具备JAVA语言的很多特性,比如反射,给测试框架开发带来一定困难,但它也毫不示弱,今年来出现了很多测试框架,比如CppUnit、UnitTest++、CppUTest、gtest、CxxTest等等,不仅如此,与Java世界的TestNG对应,C++世界中也有TestNG++(又称testngpp),它具备很多优秀的特质,比如:
(1)TestNG++支持任意字符作为用例名。gtest借助VC支持Unicode标识符,支持中文用例名,但这种方案存在固有缺陷,gcc是不支持标识符为Unicode字符串的,所以就无法使用这个特性,TestNG++巧妙的使用描述信息来标示用例,真正的用例标识符只是内部自动生成的毫无意义的名字,这使得用例可读性问题得到了很好的解决,而且这种方案完全是可以跨平台、跨编译器的。
(2)TestNG++支持Annotation、Tag等TestNG才具备的特征。
(3)TestNG++支持sandbox用例运行方式,每个用例都在独立的环境中运行,互不影响。
(4)TestNG++采用加载dll的方式运行用例,可以根据需要只加载需要测试的dll,避免了用例过滤的搜索时间。
(5)TestNG++的用例编写接口简单方便,把很多容易混淆的概念进行了巧妙的处理,避免使用者的记忆负担。比如:setup方法名字,各种不同的测试框架中有不同的定义,gtest中是SetUp,CppUnit中是setUp,TestNG++中把所有测试框架规定的关键字全作为宏封装起来,使用SETUP()宏即可。
(6)TestNG++使用CMake自动生成编译器对应的Makefile或者工程文件,支持几乎所有平台、所有编译器下的使用。
更多特性请参见:http://code.google.com/p/test-ng-pp/wiki/ChineseUserManual
从技术的角度讲,TestNG++与CxxTest类似,也采用了Python解析用例的方法,这是因为C++不支持反射,只能通过解析用例代码的方法来具备一定的反射能力,这使得使用者必须先安装Python(目前使用的是Python 2.6版本)。
本文以VC2008为例介绍testngpp的安装和使用方法。
准备活动
1、下载testngpp
下载地址:http://code.google.com/p/test-ng-pp/
该网站还有testngpp-msvc.pdf是很好的VC下使用testngpp的介绍文档,本文也是参考该文档实践成功之后所写。
另外,ChineseUserManual是很好的testngpp特性的介绍文档。
本文用到的工程类似的测试工程,网上也有下载:
http://code.google.com/p/testngpp-samples/
2、下载cmake
下载地址:http://www.cmake.org/cmake/resources/software.html
根据自己的需要下载相应的包即可,Windows下可以下载zip压缩的绿色版本。

3、编译并安装testngpp
(1)运行CMake中的bin\cmake-gui.exe,设置源代码路径为testngpp-1.0根目录,设置CMake产生的文件放置在build目录中(build目录会自动创建)。
(2)点击Configure。
弹出选择编译器的对话框,选择VC2008。
(3)一段时间之后,配置完成。
我这里存在告警,但不影响使用。
(4)再点击一次Configure,很快提示配置完成,并且Generate按钮变得可用。
(5)点击Generate按钮,生成sln和vcproj工程。
(6)用VC2008打开testngpp.sln。
(7)按F7编译解决方案。
(8)在INSTALL上点右键,编译,就可以把testngpp安装到C:\Program Files\testngpp目录(该路径在cmake中可设置)。
在项目中使用testngpp
一、被测工程
1、建立被测工程。
注意:
(1)工程类型为静态库。
(2)一般可以设置为不使用预编译头文件。
2、在被测工程目录下建立src和include目录。
源代码文件放在src目录中。
头文件放在include目录中。
编译过程中,可能需要搜索include下的头文件,所以一般要把include目录加入头文件搜索路径。
二、测试工程
1、建立测试工程。
注意:
(1)工程类型为动态库。
(2)创建为空的项目。

2、创建文件AllTests.cpp并加入测试工程。
其内容为:
#include "Sample1Test.cc"
注:Sample1Test.cc是自动生成的、可编译运行的用例。
把它包含进AllTests.cpp比直接把它加入工程要好,避免每次自动生成Sample1Test.cc之后,都要重新加载该文件。
3、配置测试工程的头文件包含路径。
包括被测工程对外公开头文件的目录,以及testngpp头文件目录、testngpp使用到的第三方库boost目录(主要用了boost的typeof实现)。
4、把testngpp.lib链接到测试工程。
配置testngpp.lib所在路径为库文件搜索路径:
5、配置Sample1Test运行时的命令行参数。
命令:C:\Program Files\testngpp\bin\testngpp-runner.exe
参数:$(OutDir)\$(TargetName) -L"C:\Program Files\testngpp\testngpp\listener" -l"testngppstdoutlistener -c -v"
注:参数中第一个是测试工程编译成的dll文件名;-L表示测试结果listener的dll所在路径;-l 表示使用哪一种结果输出的listener。
6、配置测试工程的自定义生成规则,以便根据测试文件(.h)自动生成Sample1Test.cc。
(1)项目上右键,选择“自定义生成规则”。
(2)新建规则文件。
注:如果已经创建过testngpp generator规则,则只需要把它勾上即可。该规则创建一次之后,就可以在任意解决方案中使用,当然需要注意是否能直接使用,可能需要编辑规则中的输出文件名。
(3)填写新建规则的名称、文件名、规则文件存放路径。然后点击“添加生成规则”。
(4)生成规则填写为如下图所示的样子。
命令行需要填写为:python.exe "C:\Program Files\testngpp\testngpp\generator\testngppgen.pyc" -e gb2312 -o Sample1Test.cc [inputs]
(5)最后,把TestGenerator勾上即可,它就在测试工程中生效了,编译的时候就会自动生成Sample1Test.cc 。
7、把被测工程编译生成的.lib链接到测试工程的dll中。
可以简单的设置Sample1Test依赖Sample1即可。
三、向被测工程添加被测代码。
这里是把已有的CBar.h等四个文件添加到被测工程。(当然也可以是你想编写的任何内容)
四、向测试工程添加测试代码。
测试代码写在.h文件中,参见下图。
五、编译运行。
按F7编译整个解决方案,然后再按Ctrl+F5即可运行用例。

转载于:https://www.cnblogs.com/Leo-Forest/archive/2013/04/19/3030431.html

下一代CC++测试框架TestNG++入门指导【转】相关推荐

  1. java移动端接口测试_走进Java接口测试之测试框架TestNG数据驱动(入门篇)

    前言 我们在前面的文章中,和大家分享过接口自动化测试一些基本的实现方法,但是,你很快就会发现,如果在测试脚本中硬编码测试数据的话,测试脚本灵活性会非常低.而且,对于那些具有重复的请求,而只是测试入参不 ...

  2. 走进Java接口测试大门之测试框架TestNG

    一.简介 TestNG 是一个受 JUnit 和 NUnit 启发的测试框架,旨在简化广泛的测试需求,从单元测试到接口测试. 但引入了一些新功能,使其更强大,更易于使用,例如: 注释. 在线程池中运行 ...

  3. gtest测试框架使用详解_测试框架TestNG使用介绍

    近期接触到了一个比较全面的基于Java的接口自动化测试框架,作为一名Java小白,所以打算研究一下,顺带学习学习Java,该测试框架的逻辑控制层使用的HttpClient + TestNG. 在本期中 ...

  4. groovy测试框架-Spock入门

    简介 为什么要用Spock 一.入门 1.1 依赖引入 1.2.定义一个Spock测试类 1.3一个简单的测试方法 1.4With与VerifyAll 二.Mock 三.Mock,stub,spy 四 ...

  5. 新一代(New Generation)测试框架TestNG

    好文收藏: TestNG在eclipse中的使用:http://www.ibm.com/developerworks/cn/java/j-test-ng/ TestNG与Junit的对比:http:/ ...

  6. (一)TestNG测试框架之HelloWorld入门

    前言 该篇文章主要覆盖环境配置.testNG入门.执行测试三块内容. 工具 IntelliJ IDEA TestNG 6.11 Maven pom.xml配置 新建一个maven项目,pom.xml引 ...

  7. testng执行参数_初识TestNG测试框架

    testkuaibao|软件测试自学公众号 公众号文章的推送机制改变.又由于我们公众号是不定时更新的,所以会导致很多小伙伴不能及时的收到我们的文章.大家可以把我们的公众号设置为星标,或者看完文章点个在 ...

  8. 用maven搭建 testNG+PowerMock+Mockito测试框架

    转载:http://www.cnblogs.com/changzhz/p/5158068.html 单元测试是开发中必不可少的一部分,是产品代码的重要保证. Junit和testNG是当前最流行的测试 ...

  9. spring框架mvc框架_Spring的MVC测试框架入门–第1部分

    spring框架mvc框架 最新推出的主要Spring框架是Spring MVC测试框架,Spring Guys声称它是"一流的JUnit支持,可通过流畅的API测试客户端和服务器端Spri ...

最新文章

  1. 亚马逊全面回应:涵盖人脸识别、假货等 10 个问题
  2. python3 urlencode_Python2和Python3中urllib库中urlencode的使用注意事项
  3. fzu 2154 YesOrNo
  4. 0003-Longest Substring Without Repeating Characters(无重复字符的最长子串)
  5. keyvaluepair_KeyValuePair用法(转)
  6. linux浏览器打开pdf文件,linux下的pdf浏览器(可加批注)
  7. 【Python3网络爬虫开发实战】1.2.1-Requests的安装
  8. 英语一窍不通能学计算机吗,英语一窍不通能学好软件么
  9. Redis可视化客户端Redis Desktop Manager(中文版)下载及使用
  10. Linux shell复习
  11. 被奇安信青睐的火绒 究竟有着怎样的魔力?
  12. IDEA免费教育申请(不需要教育邮箱,只要你是学生!!!)
  13. Unity-AR 简介
  14. 计算机网络/谢希仁(第八版)第三章习题
  15. mysql中单个表脏读_如何在Outlook中单击邮件后立即将其标记为已读
  16. word分词器的使用
  17. Markdown 和 LaTeX 写作规范(持续更新,建议收藏)
  18. 第三章 外科手术队伍
  19. Nginx反向代理实践
  20. linux 设备驱动(一)

热门文章

  1. 给nodejs应用的package.json添加Redis服务的依赖
  2. SAP C4C里如何实现Sales Unit和Seller的自动determination
  3. 给谷歌输入法增添自定义词组,提高输入效率
  4. 推荐一个以动画效果显示github提交记录的黑科技工具:Gource
  5. 如何处理CloudFoundry应用部署时遇到的254错误
  6. CRM订单状态的Open, In process和Completed这些条目是从哪里来的
  7. Json字符串转对象,使用ObjectMapper方式报错:no String-argument constructor/factory method
  8. 最小表达式_C# 09.找最大和最小的数字
  9. redhat5 oracle11g安装全程详解,RedHat5+Oracle11g安装全程详解.doc
  10. jsp获取当前时间存入mysql数据库_jsp获取当前时间插入Mysql数据库?