C++单元测试

以前是做软件测试的,最近刚刚转到C++开发这行,发现需要了解和掌握的内容真是很多。

废话不多说,最近想学学单元测试,而手上最最常用就是VS2010,那么就从它开始吧。

要说的是从一开始我就注意到在VS2010里面自带测试模块,想想应该本身就能够很好的完成单元测试,所以继续研究。最初的时候是鼠标点击在函数上面右键弹出菜单有创建单元测试的功能,点击之后发现提示我使用的是非托管C++能够自动生成单元测试,所以继续研究。

下面就说下本人研究的一些经验吧。

VS2010(据说只有旗舰版有测试模块,别的版本我从来没有用过)自带的单元测试支持VB、C#、VC++(俗称托管C++,微软C++等),而对于标准C++是不直接支持的,上网查了很多资料,发现貌似是可以间接实现标准C++单元测试的。但是最终实现受到诸多限制。这里 网址 )的简单精悍介绍使我对启发很大,但是注意它说在单元测试下,测试标准C++也需要懂得VC++,因为要用VC++来编写测试代码,对于我来说,我本身了解过一些VC++,所以非常讨厌这种语言,根本不是C++,更像C#,所以我进行简单的尝试后就放弃了这个单元测试方案。

我开始研究另一种单元测试方案,很主流很强大的googletest,估计就算不知道这个东西的人,上网一查就会一目了然。我要说的是,这个googletest对新手来说非常简单,在官方的帮助文档中,只需要看一页内容就能初步上手进行单元测试,非常强大非常简单,源码也开发,感觉就是非常完美。

下面对比一下VS2010和googletest单元测试优劣:

VS2010:缺点是有VS的时候才能使用,而且主要支持VB、C#、VC++,对于标注C++支持并不好,就算支持也是民间方法。它的最最大的优势就是对于长期使用VS的开发人员来说这个工具用来特别顺手,不愿再投入更多时间精力去学习别的技术的人,能够短时间就可以学会并使用VS单元测试方法。并且VS单元测试相关帮助文档很强大,在MSDN中有很详细横具体的操作方法。

googletest:缺点是可能是一个比较陌生的事物(对于没有接触过的人),优点太多:跨平台(支持微软windows,苹果OS,Linux等等);源码简单易懂,头文件和原文件就十几个;帮助文档强大,在google和wiki合作页面能够找到非常详细的使用说明和指南,并且对于新人来说一页文档就能够学会googletest的单元测试;通用性强,可以像其它第三方库一样集成到VS里面进行使用,无需额外配置和学习工具;自动化执行,主函数都是现成的copy过来就可以用,用户只需要关心单元测试具体内容就可以。

光说不练估计有人对我说的会有质疑,下面是我实践示例(下载链接:点击这里):

示例介绍:

解决方案中==>test2014053102项目:主要编写测试代码,以dll形式生成

解决方案中==>test2014053103项目:暂时无用,不用看

解决方案中==>TestProjectWithVS项目:使用VS2010自带技术对test2014053102.dll进行单元测试

解决方案中==>TestProjectWithGoogleTest项目:使用googletest技术对test2014053102.dll进行单元测试

注:具体的项目配置等信息大家可以查看下载下来的项目文件。