开源C++单元测试框架GoogleTest

    今天研究了下GoogleTest,谷歌的C++测试开源框架,遇到了诸多问题,写来总结下,也有段时间没写文章了!

/  下载http://code.google.com/p/googletest/,最新版本是1.5.0

解压,以后会出现,本来想上传截图,可惜垃圾QQ不支持Chrome,郁闷,

  build-aux,codegear,fused-src,include,make,msvc等

这里只介绍使用VS2008的方法,

  先去掉msvc文件夹的只读属性,因为VS升级工程的时候,会修改一些内容,否则报错。

  一共有:gtest.sln 和gtest-md.sln两类工程

  这里先解释下区别:最开始的时候,在我编译成功以后,

  接着新建测试demo项目。建立win32 console项目,在项目属性中设置附加include目录根据编译环境是debugrelease添加对应的附加依赖项gtestd.libgtest.lib。设置附加库路径为对应的lib路径。写好测试程序后编译工程,结果出现了很多“无法解析的外部符号”类型的错误。但是lib都已经添加了  

   错误原因: 编译测试程序时,项目属性/C++/代码生成/选项中,C++的运行库设置与编译gtest库时的运行库设置不同

  其中gtest.sln和gtest-md.sln对应就应该是这两类工程

  在编译gtest库时项目设置中运行库设置成了“多线程调试(/MTd)”,而VS2008默认项目设置是“多线程调试 DLL (/MDd)”,导致很多函数符号无法解析。

 

解决:修改运行库设置,运行库必须与生成gtest.lib的运行库设置相同


转载一篇文章:

http://tech.ccidnet.com/art/1081/20060310/474235_1.html


VC带的编译器名字叫cl.exe,它有这么几个与标准程序库有关的选项: /ML/MLd/MT/MTd/MD/MDd。这些选项告诉编译器应用程序想使用什么版本的C标准程序库。/ML(缺省选项)对应单线程静态版的标准程序库(libc.lib)/MT对应多线程静态版标准库(libcmt.lib),此时编译器会自动定义_MT宏;/MD对应多线程DLL(导入库msvcrt.libDLLmsvcrt.dll),编译器自动定义_MT_DLL两个宏。后面加d的选项都会让编译器自动多定义一个_DEBUG宏,表示要使用对应标准库的调试版,因此/MLd对应调试版单线程静态标准库(libcd.lib)/MTd对应调试版多线程静态标准库(libcmtd.lib)/MDd对应调试版多线程DLL标准库(导入库msvcrtd.libDLLmsvcrtd.dll)


  

解释以后,打开gtest-md.sln,因为一般MS默认的Console工程一般都是MDd的,里面有四个工程,最下面两个是例子程序,直接编译gtest-md工程,在msvc的 debug里,有lib文件,拷贝lib文件,并把gtest解压包里的incude/gtest 文件夹拷贝到 VC9.0下,


然后新建 console工程

编写code和测试代码,在link里的input链接gtestd.lib,

 

示例code如下:


#include<iostream>

using  namespace std;

#include <gtest/gtest.h>

 

int Foo(int a, int b)

{

if (a == 0 || b == 0)

{

throw "don't do that";

}

int c = a % b;

if (c == 0)

return b;

return Foo(b, c);

}

 

TEST(FooTest, HandleNoneZeroInput)

{

EXPECT_EQ(2, Foo(4, 10));

EXPECT_EQ(6, Foo(30, 18));

}

 

int _tmain(int argc, _TCHAR* argv[])

{

testing::InitGoogleTest(&argc, argv);

return RUN_ALL_TESTS();

}

 

 

 

 

这样就可以了,这是一个非常简单的例子,希望以后能养成写UnitTest的习惯,参考文章。

http://www.cnblogs.com/tobyforever/archive/2009/05/01/1447473.html

http://www.cnblogs.com/coderzh/archive/2009/04/06/1426758.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值