Gtest学习笔记1.0
来源:互联网 发布:中日合邦 知乎 编辑:程序博客网 时间:2024/05/17 08:39
1、在Windows下编译gtest步骤:
(1)、将gtest-1.7.0.zip进行解压缩;
(2)、用vs2010打开msvc目录下的gtest.sln工程,需要进行转换,生成gtest、gtest_main、gtest_prod_test、gtest_unittest四个工程;
(3)、分别在Debug和Release下,选中Solution ‘gtest’,点击右键,执行Rebuild Solution,会在msvc/gtest/Debug下生成gtestd.lib、gtest_maind.lib库,在msvc/gtest/Release下生成gtest.lib、gtest_main.lib库。(用VS2010集体编译会出错,最好逐个编译,PS:其他:其他版本没试过)
2、创建新的工程Gtestsample
(1)、打开属性——配置属性——常规——字符集:使用多字节字符集
(2)、在C++常规——附加目录包含:F:\C#学习\test\gtestSamples\gtest-1.7.0\gtest-1.7.0\include(include文件夹所在的位置)
(3)在代码生成中选择多线程MTD(以上全部为Debug版本)
(4)在链接器——输入——附加依赖项中加入:F:\C#学习\test\gtestSamples\gtest-1.7.0\gtest-1.7.0\msvc\gtest\Debug\gtestd.lib;
参考网址:
http://blog.csdn.net/fengbingchun/article/details/39667571
http://www.cnblogs.com/coderzh/archive/2009/04/06/1430364.html
3、新建程序
这里引用http://blog.csdn.net/fengbingchun/article/details/39667571中的例子,在stdafx.h的头文件中要包括gtest的头文件
#pragma once#include "targetver.h"#include <stdio.h>#include <tchar.h>#include "gtest/gtest.h"
在stdafx.cpp中要给出gtest的路径,如下所示:
#include "stdafx.h"#ifdef _DEBUG#pragma comment(lib, "F:/C#学习/test/gtestSamples/gtest-1.7.0/gtest-1.7.0/msvc/gtest/Debug/gtestd.lib")#pragma comment(lib, "F:/C#学习/test/gtestSamples/gtest-1.7.0/gtest-1.7.0/msvc/gtest/Debug/gtest_maind.lib")#else#pragma comment(lib, "F:/C#学习/test/gtestSamples/gtest-1.7.0/gtest-1.7.0/msvc/gtest/Release/gtest.lib")#pragma comment(lib, "F:/C#学习/test/gtestSamples/gtest-1.7.0/gtest-1.7.0/msvc/gtest/Releasegtest_main.lib") #endif
上述路径分别包括debug和Release版本的路径,
新建一个头文件,记做fun.h
# ifndef _FOO_H_# define _FOO_H_int Foo(int a, int b){ if (a == 0 || b == 0) { throw "THAT IS Wrong"; } int c = a % b; if (c == 0) return b; return Foo(b, c);}#endif
这是一个求取最大公约数的例子,如果a或b都为0,这抛出错误。c的值是a除b取余。如果a、b整除了,c就等于0。这时候就返回被除数b,否则返回函数Foo
现在对该头文件进行测试,在创建的工程文件cpp中进行测试,设计测试用例,对于a或b都等于0的情况,暂时不知道如何测试,小白刚开始学~忧伤ing(大神不要喷啊~~第一次写博客,学测试),言归正传:
#include "stdafx.h"#include "fun.h"TEST(fun,Foo){ EXPECT_EQ(1, Foo(1, 3));//判断Foo函数实参为4和10的时候,其结果是都等于2 EXPECT_EQ(6, Foo(30, 18)); EXPECT_EQ(30, Foo(30, 30));}int main(int argc, char* argv[]){ ::testing::InitGoogleTest(&argc, argv); int i=RUN_ALL_TESTS(); system("pause"); return i;}
这里设计了三个测试用例,不全面,主要是还不知道其他测试函数怎么用,EXPECT_EQ(6, Foo(30, 18))中,Foo(30, 18)表示该函数取余后所得的值,6是真实值,判断二者是都相等,在主函数中RUN_ALL_TESTS()
表示在主函数中运行所有测试用例,结果如下:
- Gtest学习笔记1.0
- Gtest学习笔记1.1
- Gtest学习笔记1.2
- gtest学习笔记
- 学习gtest笔记<1-VS2013环境搭建>
- gtest笔记
- gtest学习
- gtest学习
- Gtest使用笔记
- Gtest使用笔记
- linux下gTest笔记
- GTest初步学习
- gtest学习之断言
- gtest学习帖
- GTEST基础学习
- caffe学习gtest模板
- gtest简单原理学习
- gtest断言学习
- Product of Array Except Self 数组除自身的所有乘积
- 开启线程后开辟stacksize 最小为多少
- HBASE table导出到文件的方法
- 关于App远程推送和启动
- 敏捷开发
- Gtest学习笔记1.0
- 第二周 项目一 C/C++语言中函数参数传递的三种方式(三):.引用传递
- BFS
- Android 4.4音量键控制音量流程
- javascript函数
- sql 当前时间跟数据库字段做比较
- 第二周实践项目1-C++语言中函数参数传递的三种方式(传地址)
- Java获取客户端真实IP
- Provider错误’80004005′”如何处理