Gtest学习笔记1.0

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()
表示在主函数中运行所有测试用例,结果如下:测试成功,还表明的测试所消耗的时间总共为6ms

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值