CppUnit在VS2010上的正确使用
CppUnit在vs2008里是可以完全编译的了,不过我也是试了几次才行的。
先下个最新版cppunit-1.12.1.tar.gz 解压缩,进入cppunit-1.12.1/src目录,就是源代码所在,打开CppUnitLibraries.dsw工程,是用vc6.0写的,转换到CppUnitLibraries.sln ok,接着只需要修改一点点内容,删除掉解决方案下的DSPlugIn工程,修改TestRunner下UserInterface/DynamicWindow/MsDevCallerListCtrl.cpp文件第67行,改成"#import "libid:80cc9f66-e7d8-4ddd-85b6-d9e6cd0e93e2" version("8.0") lcid("0") raw_interfaces_only named_guids"。这样就可以了,点解决方案里的生成解决方案,等等等等.... 终于好了,生成文件自动拷贝到上级目录的lib下,一共7个文件,除了原始里面那个。(用debug或release都可以的,默认是debug)
把cppunit-1.12.1/include加到vs里的选择“选项”标签里的包含文件,cppunit-1.12.1/lib加到库文件,lib想加到环境变量里也行,那样不用拷贝dll文件。
接着新建一个测试gui界面的vs c++2008 MFC对话框工程CSS_CPPUNIT,修改项目属性里的配置属性里的链接器,启动增量链接改为否。 修改CSS_CPPUNIT.cpp文件,改成这样
1、 上面的红色字体给出的是我在网上查到的最常见的介绍CppUnit在vs2008里编译的方法,但是我尝试了很多遍都没有编译成功,害的我最后还以为是cppunit-1.12.1在VS2010上不可以使用。最后被导师所逼不得不弄清楚到底是怎么一回事才一步一步的运行终于找到了正确的方法。当然因为还只是一个菜鸟级别所以有些方法还是很笨拙的,之所以想把它写下来是怕以后会忘记了!
2、 先下个最新版cppunit-1.12.1.tar.gz 解压缩,进入cppunit-1.12.1/src目录,就是源代码所在,打开CppUnitLibraries.dsw工程,是用vc6.0写的,转换到CppUnitLibraries.sln ok,
3、 然后依次运行CppUnitLibraries.dsw工程下的每个项目,这样做的目的是为了方面发现问题和找到正确的解决方法。下面是我在运行相应项目时所提示的错误以及解决办法
1) 运行项目Cppunit
解决办法:
选择Cppunit右键属性 ->(debug)配置属性->常规->目标文件名:$(ProjectName)修改成cppunitd(这样做是为保持链接器->常规->目标文件名 一致);
2) 运行项目cppunit_dll
解决办法:
选择Cppunit右键属性 ->(debug)配置属性->常规->目标文件名:$(ProjectName)修改成cppunitd_dll(这样做是为保持库管理器->常规->目标文件名 一致);
3)到这里这里会发现其实每个项目的错误基本上都是TargeName(xxx)与Linker的OutputFile属性值不匹配;依次修改项目DllPlugInTester、DSPlugIn、TestPlugInRunner、TestRunner的Debug配置属性
4)当然当修改完DSPlugIn的Debug配置属性后再运行我们发现
我们仔细观察到底新的错误是什么呢? 这里修改方式就是最上面的红色字中提到的
修改TestRunner下UserInterface/DynamicWindow/MsDevCallerListCtrl.cpp文件第67行,改成"#import "libid:80cc9f66-e7d8-4ddd-85b6-d9e6cd0e93e2" version("8.0") lcid("0") raw_interfaces_only named_guids"。
5)再次运行DSPlugIn项目我们会发现依然有错误
解决方法:
选择项目->属性->配置属性->链接器->高级->无入口点 选择"是(/NOENTRY)"
6)最后为了生成全面的库文件我需要分别在Debug、release、Debug unicode、release unicode四种配置属性中生成全部解决方案。(运行过程中会遇到错误基本上都可以从上文中找到解决方法)
下面将给出一些我个人觉得对于学习cppunit有用处的网页地址:
CppUnit测试框架入门
http://blog.csdn.net/cpluser/archive/2004/09/21/111522.aspx
http://www.vckbase.com/document/viewdoc/?id=1258
使用CPPUNIT如何建立一个基于MFC的GUI测试框架
http://blog.csdn.net/enotswn/archive/2009/09/08/4531647.aspx