CppUnit 遇到的问题和解决方法

CppUnit是一个很方便的Unit Test工具, 这几天学习CppUnit中遇到两个小问题, 可能会让新手很烦恼,在这里提供解决的方法。

1. 在使用vs2003以上版本的Visual Studio时, build project TestPlugInRunner会失败,出现如下的Error:







这是因为CppUnit会用到VS IDE来定位和显示错误的Test Case的源文件和代码行, 而导入的IDE Com对象的Version不正确,只需要把Project TestPlugInRunner 文件MsDevCallerListCtrl.cpp 67行

#import "libid:80cc9f66-e7d8-4ddd-85b6-d9e6cd0e93e2" version("7.0") lcid("0") raw_interfaces_only named_guids

改为:
  1. #if _MSC_VER >= 1300 && _MSC_VER < 1400
  2. //vs 2003
  3. #import "libid:80cc9f66-e7d8-4ddd-85b6-d9e6cd0e93e2" version("7.0") lcid("0") raw_interfaces_only named_guids
  4. #elif _MSC_VER >= 1400 && _MSC_VER < 1500
  5. //vs 2005
  6. #import "libid:80cc9f66-e7d8-4ddd-85b6-d9e6cd0e93e2" version("8.0") lcid("0") raw_interfaces_only named_guids
  7. #elif _MSC_VER >= 1500
  8. //vs 2008   
  9. #import "libid:80cc9f66-e7d8-4ddd-85b6-d9e6cd0e93e2" version("9.0") lcid("0") raw_interfaces_only named_guids
  10. #endif
重新Build该Project即可。

2. 在使用TestPlugInRunner执行TestCase后,双击ListControl中失败的case会出现一个失败的断言,该错误是因为使用vs2003或更高版本时,TestPlugInRunner没有调用CoInitialize初始化.
将Project TestPlugInRunner文件MsDevCallerListCtrl.cpp中把namespace VC7Handler中的代码
  1.    static bool initialize()
  2.    {
  3.         return true;
  4.    }
  5.    static void uninitialize( bool initialized )
  6.    {
  7.    }
改为:
  1.    static bool initialize()
  2.    {
  3.         return SUCCEEDED(::CoInitialize(NULL));
  4.    }
  5.    static void uninitialize( bool initialized )
  6.    {
  7.         if ( initialized )
  8.             ::CoUninitialize();
  9.    }
重新Build以后,使用TestPlugInRunner执行你的TestCase, 双击失败的Case后即可在VS IDE中定位错误的代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值