转 http://www.cnblogs.com/jycboy/p/6001153.html
1.下载googletest: https://github.com/google/googletest
2.以VS为例,在VS中导入msvc/gtest.sln,然后重新编译,debug、release两个模式都要编译。编译后,在msvc/gtest/下有debug、release两个文件夹。
msvcgtestDebug - Debug方案下的二进制文件:gtestd.lib、gtest_maind.lib(注意主文件名的d后缀)
msvcgtestRelease - Release方案下的二进制文件:gtest.lib、gtest_main.lib
至此,准备阶段完成。(也可以不用VS构建,用Xcode、GNU make、 Borland C++ Builder)。
3.创建具体的测试项目
3.1 在VS2015中,创建WIN32控制台应用;
3.2 右击工程名,点击“属性”,配置工程属性; 展开“配置属性——C/C++——常规”,在“附加包含目录”中添加“.gtest-1.7.0include”(省略部分为gtest-1.8.0的路径);
3.3 展开“C/C++——代码生成”,在“运行库”中修改为“多线程调试(/MTd)”;(其实你也可以选择动态链接(/MD),前提是你之前编译的gtest也使用了同样是/MD选项)
3.4 展开“链接器——输入”,在“附加依赖项”中添加第二步生成的gtestd.lib,附加上正确的路径;在这里有个小技巧,.lib是静态库文件,你可以把它们放到一个专门的lib文件夹下,lib文件夹放哪自己看着办吧,我是放在了googletest文件夹下。
上述是以Debug模式为例,Release模式就是把3.3、3.4换成对应于Release的就可以。
4. 项目代码
stdafx.h:
1
2
3
4
|
#include "targetver.h" #include <stdio.h> #include <tchar.h> |
FirstGtest.cpp:
1
2
3
4
5
6
7
8
|
#include "stdafx.h" #include <gtestgtest.h> int _tmain( int argc, _TCHAR* argv[]) { testing::InitGoogleTest(&argc, argv); return RUN_ALL_TESTS(); } |
add.cpp:
1
2
3
4
5
6
|
#include "stdafx.h" int Add( int a, int b) { return a + b; } |
testCase.cpp:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
#include "stdafx.h" #include <gtestgtest.h> extern int Add( int a, int b); TEST(testCase, test0) { EXPECT_EQ(14, Add(4, 10)); //EXPECT_EQ是比较两个值是否相等 } TEST(testCase, test1) { /*本用例不过*/ EXPECT_EQ(6, Add(5, 7)); } TEST(testCase, test2) { EXPECT_EQ(28, Add(10, 18)); } |
从上边可以看出:3个测试中一个失败,两个成功。
5. 编译成功如下:
6.如果出现以下错误:就是3.3步修改错了。
7.Release模式下:
3.3 展开“C/C++——代码生成”,在“运行库”中修改为“多线程(/MT)”;
3.4 展开“链接器——输入”,在“附加依赖项”中添加第二步生成的gtest.lib,附加上正确的 路径;
OK。