找回密码
 用户注册

QQ登录

只需一步,快速开始

查看: 6692|回复: 2

GOOGLE的开源测试框架

[复制链接]
发表于 2009-7-6 11:01:58 | 显示全部楼层 |阅读模式
library地址:
http://code.google.com/p/googletest/

下面内容转自:
http://www.cnblogs.com/coderzh/archive/2009/04/06/1426755.html
玩转Google开源C++单元测试框架Google Test系列(gtest)(总)
前段时间学习和了解了下Google的开源C++单元测试框架Google Test,简称gtest,非常的不错。 我们原来使用的是自己实现的一套单元测试框架,在使用过程中,发现越来越多使用不便之处,而这样不便之处,gtest恰恰很好的解决了。

其实gtest本身的实现并不复杂,我们完全可以模仿gtest,不断的完善我们的测试框架, 但最后我们还是决定使用gtest取代掉原来的自己的测试框架,原因是:

1.不断完善我们的测试框架之后就会发觉相当于把gtest重新做了一遍,虽然轮子造的很爽,但是不是必要的。
2.使用gtest可以免去维护测试框架的麻烦,让我们有更多精力投入到案例设计上。

3.gtest提高了非常完善的功能,并且简单易用,极大的提高了编写测试案例的效率。
gtest的官方网站是:
http://code.google.com/p/googletest/

从官方的使用文档里,你几乎可以获得你想要的所有东西

http://code.google.com/p/googletest/wiki/GoogleTestPrimer

http://code.google.com/p/googletest/wiki/GoogleTestAdvancedGuide

如果还想对gtest内部探个究竟,就把它的代码下载下来研究吧,这就是开源的好处,哈!

官方已经有如此完备的文档了,为什么我还要写呢?一方面是自己记记笔记,好记性不如烂笔头,以后自己想查查一些用法也可以直接在这里查到,一方面是对于不想去看一大堆英文文档的朋友,在我这里可以快速的找到gtest相关的内容。
下面是该系列的目录:

1.玩转Google开源C++单元测试框架Google Test系列(gtest)之一 - 初识gtest

2.玩转Google开源C++单元测试框架Google Test系列(gtest)之二 - 断言

3.玩转Google开源C++单元测试框架Google Test系列(gtest)之三 - 事件机制
4.玩转Google开源C++单元测试框架Google Test系列(gtest)之四 - 参数化
5.玩转Google开源C++单元测试框架Google Test系列(gtest)之五 - 死亡测试

6.玩转Google开源C++单元测试框架Google Test系列(gtest)之六 - 运行参数
7.玩转Google开源C++单元测试框架Google Test系列(gtest)之七 - 深入解析gtest

8.玩转Google开源C++单元测试框架Google Test系列(gtest)之八 - 打造自己的单元测试框架
发表于 2010-2-22 09:58:18 | 显示全部楼层

编译出错

libcpmtd.lib(xmutex.obj) : error LNK2005: "public: void __thiscall std::_Mutex::_Lock(void)" (?_Lock@_Mutex@std@@QAEXXZ) 已经在 gtest.lib(gtest.obj) 中定义
libcpmtd.lib(xmutex.obj) : error LNK2005: "public: void __thiscall std::_Mutex::_Unlock(void)" (?_Unlock@_Mutex@std@@QAEXXZ) 已经在 gtest.lib(gtest.obj) 中定义
libcpmtd.lib(xlock.obj) : error LNK2005: "public: __thiscall std::_Lockit::_Lockit(int)" (??0_Lockit@std@@QAE@H@Z) 已经在 gtest.lib(gtest.obj) 中定义
libcpmtd.lib(xlock.obj) : error LNK2005: "public: __thiscall std::_Lockit::~_Lockit(void)" (??1_Lockit@std@@QAE@XZ) 已经在 gtest.lib(gtest.obj) 中定义
LIBC.lib(crt0dat.obj) : error LNK2005: ___crtExitProcess 已经在 LIBCMTD.lib(crt0dat.obj) 中定义
LIBC.lib(crt0dat.obj) : error LNK2005: __cinit 已经在 LIBCMTD.lib(crt0dat.obj) 中定义
LIBC.lib(crt0dat.obj) : error LNK2005: _exit 已经在 LIBCMTD.lib(crt0dat.obj) 中定义
LIBC.lib(crt0dat.obj) : error LNK2005: __exit 已经在 LIBCMTD.lib(crt0dat.obj) 中定义
LIBC.lib(crt0dat.obj) : error LNK2005: __cexit 已经在 LIBCMTD.lib(crt0dat.obj) 中定义
LIBC.lib(crt0dat.obj) : error LNK2005: __c_exit 已经在 LIBCMTD.lib(crt0dat.obj) 中定义
LIBC.lib(crt0dat.obj) : error LNK2005: __C_Exit_Done 已经在 LIBCMTD.lib(crt0dat.obj) 中定义
LIBC.lib(crt0dat.obj) : error LNK2005: __C_Termination_Done 已经在 LIBCMTD.lib(crt0dat.obj) 中定义
LIBC.lib(crt0dat.obj) : error LNK2005: __exitflag 已经在 LIBCMTD.lib(crt0dat.obj) 中定义
LIBC.lib(crt0dat.obj) : error LNK2005: __wpgmptr 已经在 LIBCMTD.lib(crt0dat.obj) 中定义
LIBC.lib(crt0dat.obj) : error LNK2005: __pgmptr 已经在 LIBCMTD.lib(crt0dat.obj) 中定义
LIBC.lib(crt0dat.obj) : error LNK2005: ___winitenv 已经在 LIBCMTD.lib(crt0dat.obj) 中定义
LIBC.lib(crt0dat.obj) : error LNK2005: __wenviron 已经在 LIBCMTD.lib(crt0dat.obj) 中定义
LIBC.lib(crt0dat.obj) : error LNK2005: ___initenv 已经在 LIBCMTD.lib(crt0dat.obj) 中定义
LIBC.lib(crt0dat.obj) : error LNK2005: __environ 已经在 LIBCMTD.lib(crt0dat.obj) 中定义
LIBC.lib(crt0dat.obj) : error LNK2005: ___wargv 已经在 LIBCMTD.lib(crt0dat.obj) 中定义
LIBC.lib(crt0dat.obj) : error LNK2005: ___argv 已经在 LIBCMTD.lib(crt0dat.obj) 中定义
LIBC.lib(crt0dat.obj) : error LNK2005: ___argc 已经在 LIBCMTD.lib(crt0dat.obj) 中定义
LIBC.lib(crt0dat.obj) : error LNK2005: __winminor 已经在 LIBCMTD.lib(crt0dat.obj) 中定义
LIBC.lib(crt0dat.obj) : error LNK2005: __winmajor 已经在 LIBCMTD.lib(crt0dat.obj) 中定义
LIBC.lib(crt0dat.obj) : error LNK2005: __winver 已经在 LIBCMTD.lib(crt0dat.obj) 中定义
LIBC.lib(crt0dat.obj) : error LNK2005: __osver 已经在 LIBCMTD.lib(crt0dat.obj) 中定义
LIBC.lib(crt0dat.obj) : error LNK2005: __osplatform 已经在 LIBCMTD.lib(crt0dat.obj) 中定义
LIBC.lib(crt0dat.obj) : error LNK2005: __umaskval 已经在 LIBCMTD.lib(crt0dat.obj) 中定义
LINK : warning LNK4098: 默认库“LIBC”与其他库的使用冲突;使用 /NODEFAULTLIB:library
Debug/my-gtest.exe : fatal error LNK1169: 找到一个或多个多重定义的符号
发表于 2010-2-22 09:59:19 | 显示全部楼层
我已经按照第一章里的要求做了,怎么还出现错误?我用的是2003
您需要登录后才可以回帖 登录 | 用户注册

本版积分规则

Archiver|手机版|小黑屋|ACE Developer ( 京ICP备06055248号 )

GMT+8, 2024-12-22 17:27 , Processed in 0.014715 second(s), 5 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表