xUnit
xUnit框架改变了单元测试的历史,一时间,很多语言的多种单元测试框架蜂涌而至。
(
xUnit是各种代码驱动测试框架的统称,这些框架可以测试软件的不同单元,比如函数和类。xUni框架的主要优点是,它提供了一个自动化测试的解决方案,没必要多次编写重复的测试代码。https://wenku.baidu.com/view/966b775ccc7931b765ce155a.html)
发展至今,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用例运行方式,每个用例都在独立的环境中运行,互不影响。(sandbox沙盘盒子。一个被隔离的程序,在里面做任务事件都不会影响到宿主程序。只能调用宿主开放的一些API。)
(4)TestNG++采用加载dll的方式运行用例,可以根据需要只加载需要测试的dll,避免了用例过滤的搜索时间。
(5)TestNG++的用例编写接口简单方便,把很多容易混淆的概念进行了巧妙的处理,避免使用者的记忆负担。比如:setup方法名字,各种不同的测试框架中有不同的定义,gtest中是SetUp,CppUnit中是setUp,TestNG++中把所有测试框架规定的关键字全作为宏封装起来,使用SETUP()宏即可。
从技术的角度讲,TestNG++与CxxTest类似,也采用了Python解析用例的方法,这是因为C++不支持反射,只能通过解析用例代码的方法来具备一定的反射能力,这使得使用者必须先安装Python(目前使用的是Python 2.6版本)。
本文以VC2008为例介绍testngpp的安装和使用方法。
注:实际上,对于C++程序员来说,从零到Testngpp的一步,可以看做是敏捷实践和TDD思想的第一步(当然也有可能是读了一本书《TDD》或者《重构》心血来潮想要试试的第一步)。
准备活动:
1. 下载testngpp
下载地址:http://code.google.com/p/test-ng-pp/
该网站还有testngpp-msvc.pdf是很好的VC下使用testngpp的介绍文档,本文也是参考该文档实践成功之后所写。
另外,ChineseUserManual是很好的testngpp特性的介绍文档。
本文用到的工程类似的测试工程,网上也有下载:http://code.google.com/p/testngpp-samples/注:如果有些家庭网络和公司网络不能连接code.google.com的话,最好不要随便在搜索引擎里找testngpp的源码,比如在https://bitbucket.org/godsme/testng网站上下载的代码,不知为何,总是无法正确编译。
注:推荐使用testngpp1.1的版本进行编译和安装。
预留资源链接-->-------------------------------<--预留资源链接
2、下载cmake
注:cmake 的版本并无太多要求,从老到新应该都能用。
3、编译并安装testngpp
确保在编译之后不要再更改Python的版本,否则在用例编译过程中会导导致“ImportError:Bad magic number”类似的错误告警。
(2)点击Configure。
弹出选择编译器的对话框,选择VC2010。
(3)一段时间之后,配置完成。
我这里存在告警,但不影响使用。
(4)再点击一次Configure,很快提示配置完成,并且Generate按钮变得可用。
(5)点击Generate按钮,生成sln和vcproj工程。
(6)用VC2010打开testngpp.sln。
(7)按F7编译解决方案。
(8)在INSTALL上点右键,编译,就可以把testngpp安装到C:/Program Files/testngpp目录(该路径在cmake中可设置)。注:以上步骤没有问题,我出错的两次分别是下错了代码和编译期间换了Python版本。
在项目中使用testngpp
一、被测工程
1、建立被测工程。
注意:
(1)工程类型为静态库。
(2)一般可以设置为不使用预编译头文件。注:忘记修改不使用预编译头文件的话,可以在“属性-配置属性-C/C++-预编译头”选项中修改。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/23106.html