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文件,改成这样
#include "stdafx.h"
#include "CSS_CPPUNIT.h"
#include "CSS_CPPUNITDlg.h"
#include <cppunit/extensions/TestFactoryRegistry.h>
#include <cppunit/ui/mfc/TestRunner.h>
这里再加上这句
BOOL CCSS_CPPUNITApp::InitInstance()
{
#pragma comment(lib, "cppunitd.lib")
#pragma comment(lib, "testrunnerud.lib")
把下面的注释掉
//CCSS_CPPUNITDlg dlg;
//m_pMainWnd = &dlg;
//INT_PTR nResponse = dlg.DoModal();
//if (nResponse == IDOK)
//{
// // TODO: 在此放置处理何时用
// // “确定”来关闭对话框的代码
//}
//else if (nResponse == IDCANCEL)
//{
// // TODO: 在此放置处理何时用
// // “取消”来关闭对话框的代码
//}
然后在其后添加
CppUnit::MfcUi::TestRunner runner;
CppUnit::TestFactoryRegistry ®istry = CppUnit::TestFactoryRegistry::getRegistry();
runner.addTest(registry.makeTest());
runner.run();
return true;
CppUnit::TestFactoryRegistry ®istry = CppUnit::TestFactoryRegistry::getRegistry();
runner.addTest(registry.makeTest());
runner.run();
return true;
完成了,编译一下看看,界面出来了,试试看这个测试工具吧。