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
改为:
重新Build该Project即可。
2. 在使用TestPlugInRunner执行TestCase后,双击ListControl中失败的case会出现一个失败的断言,该错误是因为使用vs2003或更高版本时,TestPlugInRunner没有调用CoInitialize初始化.
将Project TestPlugInRunner文件MsDevCallerListCtrl.cpp中把namespace VC7Handler中的代码
改为:
重新Build以后,使用TestPlugInRunner执行你的TestCase, 双击失败的Case后即可在VS IDE中定位错误的代码。
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
改为:
- #if _MSC_VER >= 1300 && _MSC_VER < 1400
- //vs 2003
- #import "libid:80cc9f66-e7d8-4ddd-85b6-d9e6cd0e93e2" version("7.0") lcid("0") raw_interfaces_only named_guids
- #elif _MSC_VER >= 1400 && _MSC_VER < 1500
- //vs 2005
- #import "libid:80cc9f66-e7d8-4ddd-85b6-d9e6cd0e93e2" version("8.0") lcid("0") raw_interfaces_only named_guids
- #elif _MSC_VER >= 1500
- //vs 2008
- #import "libid:80cc9f66-e7d8-4ddd-85b6-d9e6cd0e93e2" version("9.0") lcid("0") raw_interfaces_only named_guids
- #endif
2. 在使用TestPlugInRunner执行TestCase后,双击ListControl中失败的case会出现一个失败的断言,该错误是因为使用vs2003或更高版本时,TestPlugInRunner没有调用CoInitialize初始化.
将Project TestPlugInRunner文件MsDevCallerListCtrl.cpp中把namespace VC7Handler中的代码
- static bool initialize()
- {
- return true;
- }
- static void uninitialize( bool initialized )
- {
- }
- static bool initialize()
- {
- return SUCCEEDED(::CoInitialize(NULL));
- }
- static void uninitialize( bool initialized )
- {
- if ( initialized )
- ::CoUninitialize();
- }