VS2010使用GooglTest,GoogleMock
2013-02-25 15:26
190 查看
一、环境搭建
下载gmock-1.6.0.zip 官网:gmock
二、设置系统环境变量
说明:将gmock-1.6.0.zip解压到D:盘
GMOCK_DIR=D:\gmock-1.6.0
GTEST_DIR=D:\gmock-1.6.0\gtest
三、编译gmock源码
进入D:\gmock-1.6.0\msvc\2010
用vs2010打开gmock.sln,打开后,按F7
生成解决方案后,将会在Debug中生成gmock.lib,gmock_main.lib,gmock_test.exe
gmock就编译结束了。
四、在VS2010中使用gmock
新建一个控制台程序 源码如下:
说明:将gmock.lib拷贝到工程目录里。
在工程的VC++目录-》包含目录中添加
$(GMOCK_DIR)/include;$(GTEST_DIR)/include;
错误处理:
如果编译时出现以下内容:
libcmtd.lib(errmode.obj) : error LNK2005: ___set_app_type 已经在 MSVCRTD.lib(MSVCR100D.dll) 中定义
1>libcmtd.lib(invarg.obj) : error LNK2005: __invoke_watson 已经在 MSVCRTD.lib(MSVCR100D.dll) 中定义
1>libcmtd.lib(dbgheap.obj) : error LNK2005: __CrtSetCheckCount 已经在 MSVCRTD.lib(MSVCR100D.dll) 中定义
1>libcmtd.lib(hooks.obj) : error LNK2005: "void __cdecl terminate(void)" (?terminate@@YAXXZ) 已经在 MSVCRTD.lib(MSVCR100D.dll) 中定义
1>libcmtd.lib(setlocal.obj) : error LNK2005: __configthreadlocale 已经在 MSVCRTD.lib(MSVCR100D.dll) 中定义
1>libcmtd.lib(crt0dat.obj) : error LNK2005: _exit 已经在 MSVCRTD.lib(MSVCR100D.dll) 中定义
1>libcmtd.lib(crt0dat.obj) : error LNK2005: __exit 已经在 MSVCRTD.lib(MSVCR100D.dll) 中定义
1>libcmtd.lib(crt0dat.obj) : error LNK2005: __cexit 已经在 MSVCRTD.lib(MSVCR100D.dll) 中定义
1>libcmtd.lib(crt0dat.obj) : error LNK2005: __amsg_exit 已经在 MSVCRTD.lib(MSVCR100D.dll) 中定义
1>libcmtd.lib(crt0dat.obj) : error LNK2005: __initterm_e 已经在 MSVCRTD.lib(MSVCR100D.dll) 中定义
1>libcmtd.lib(crt0.obj) : error LNK2005: _mainCRTStartup 已经在 MSVCRTD.lib(crtexe.obj) 中定义
1>libcmtd.lib(mlock.obj) : error LNK2005: __lock 已经在 MSVCRTD.lib(MSVCR100D.dll) 中定义
1>libcmtd.lib(mlock.obj) : error LNK2005: __unlock 已经在 MSVCRTD.lib(MSVCR100D.dll) 中定义
1>libcmtd.lib(dbghook.obj) : error LNK2005: __crt_debugger_hook 已经在 MSVCRTD.lib(MSVCR100D.dll) 中定义
1>libcmtd.lib(winxfltr.obj) : error LNK2005: __XcptFilter 已经在 MSVCRTD.lib(MSVCR100D.dll) 中定义
1>libcmtd.lib(crt0init.obj) : error LNK2005: ___xi_a 已经在 MSVCRTD.lib(cinitexe.obj) 中定义
解决方法:项目属性(Alt+F7)——C/C++——代码生成——
如果是Debug的“在静态库中使用MFC”,不要使用MDd,改用MTd,然后编译即可通过。
如果是Debug的“在共享DLL中使用MFC”,注意不要使用MTd,改用MDd;
如果是Release版本“在静态库中使用MFC”,不要使用MD,使用MT;
如果是Release版本的“在共享DLL中使用MFC”,不要使用MT,使用MD。
保持gmock生成的gmock.lib和工程中使用gmock.lib编译代码生成时,运行库的设置相同。
下载gmock-1.6.0.zip 官网:gmock
二、设置系统环境变量
说明:将gmock-1.6.0.zip解压到D:盘
GMOCK_DIR=D:\gmock-1.6.0
GTEST_DIR=D:\gmock-1.6.0\gtest
三、编译gmock源码
进入D:\gmock-1.6.0\msvc\2010
用vs2010打开gmock.sln,打开后,按F7
生成解决方案后,将会在Debug中生成gmock.lib,gmock_main.lib,gmock_test.exe
gmock就编译结束了。
四、在VS2010中使用gmock
新建一个控制台程序 源码如下:
#include<iostream> #include<gtest/gtest.h> #include<gmock/gmock.h> #pragma comment(lib,"gmock.lib") using namespace std; int main(int argc, char** argv) { testing::InitGoogleMock(&argc, argv); int r = RUN_ALL_TESTS(); return 0; }
说明:将gmock.lib拷贝到工程目录里。
在工程的VC++目录-》包含目录中添加
$(GMOCK_DIR)/include;$(GTEST_DIR)/include;
错误处理:
如果编译时出现以下内容:
libcmtd.lib(errmode.obj) : error LNK2005: ___set_app_type 已经在 MSVCRTD.lib(MSVCR100D.dll) 中定义
1>libcmtd.lib(invarg.obj) : error LNK2005: __invoke_watson 已经在 MSVCRTD.lib(MSVCR100D.dll) 中定义
1>libcmtd.lib(dbgheap.obj) : error LNK2005: __CrtSetCheckCount 已经在 MSVCRTD.lib(MSVCR100D.dll) 中定义
1>libcmtd.lib(hooks.obj) : error LNK2005: "void __cdecl terminate(void)" (?terminate@@YAXXZ) 已经在 MSVCRTD.lib(MSVCR100D.dll) 中定义
1>libcmtd.lib(setlocal.obj) : error LNK2005: __configthreadlocale 已经在 MSVCRTD.lib(MSVCR100D.dll) 中定义
1>libcmtd.lib(crt0dat.obj) : error LNK2005: _exit 已经在 MSVCRTD.lib(MSVCR100D.dll) 中定义
1>libcmtd.lib(crt0dat.obj) : error LNK2005: __exit 已经在 MSVCRTD.lib(MSVCR100D.dll) 中定义
1>libcmtd.lib(crt0dat.obj) : error LNK2005: __cexit 已经在 MSVCRTD.lib(MSVCR100D.dll) 中定义
1>libcmtd.lib(crt0dat.obj) : error LNK2005: __amsg_exit 已经在 MSVCRTD.lib(MSVCR100D.dll) 中定义
1>libcmtd.lib(crt0dat.obj) : error LNK2005: __initterm_e 已经在 MSVCRTD.lib(MSVCR100D.dll) 中定义
1>libcmtd.lib(crt0.obj) : error LNK2005: _mainCRTStartup 已经在 MSVCRTD.lib(crtexe.obj) 中定义
1>libcmtd.lib(mlock.obj) : error LNK2005: __lock 已经在 MSVCRTD.lib(MSVCR100D.dll) 中定义
1>libcmtd.lib(mlock.obj) : error LNK2005: __unlock 已经在 MSVCRTD.lib(MSVCR100D.dll) 中定义
1>libcmtd.lib(dbghook.obj) : error LNK2005: __crt_debugger_hook 已经在 MSVCRTD.lib(MSVCR100D.dll) 中定义
1>libcmtd.lib(winxfltr.obj) : error LNK2005: __XcptFilter 已经在 MSVCRTD.lib(MSVCR100D.dll) 中定义
1>libcmtd.lib(crt0init.obj) : error LNK2005: ___xi_a 已经在 MSVCRTD.lib(cinitexe.obj) 中定义
解决方法:项目属性(Alt+F7)——C/C++——代码生成——
如果是Debug的“在静态库中使用MFC”,不要使用MDd,改用MTd,然后编译即可通过。
如果是Debug的“在共享DLL中使用MFC”,注意不要使用MTd,改用MDd;
如果是Release版本“在静态库中使用MFC”,不要使用MD,使用MT;
如果是Release版本的“在共享DLL中使用MFC”,不要使用MT,使用MD。
保持gmock生成的gmock.lib和工程中使用gmock.lib编译代码生成时,运行库的设置相同。
相关文章推荐
- VS2010使用GooglTest,GoogleMock
- 使用vs2010的Coded UI Test实现数据驱动的用户自动登录测试
- 怎么在vs2010中使用ActiveX Test Container(转)
- 使用vs2010的Coded UI Test实现数据驱动的用户自动登录测试
- 使用vs2010的Coded UI Test实现数据驱动的用户自动登录测试
- 如何使用VS2010分析.net dump
- vs2010 之后安装vs2012,原VS2010里的测试工程不能使用的解决方法
- 在VS2010中使用Git管理源代码
- VS2010中,使用MySQL在GridView上显示数据
- VS2005(vs2008,vs2010)使用map文件查找程序崩溃原因
- 如何在vs2010中使用SSE指令集
- VS2010中设置字符集不使用Unicode
- VS2010中水晶报表的安装和使用
- c# 使用VS2010 C#开发ActiveX控件
- 使用VS2008打开VS2010的解决方案
- doctest模块的使用说明
- Ubuntu上使用autotest做Rails项目的自动测试 - autotest安装和测试
- QT creator创建的界面被VS2010使用
- VS2010 MFC中 Date Time Picker控件的使用
- Python之使用unittest框架和HTMLTestRunner.py文件实现多个测试用例执行与测试报告生成