zoukankan      html  css  js  c++  java
  • Google开源单元測试框架Google Test:VS2012 配置

    由题目可知,Google Test(简称gtest)是Google公布的一个开源C/C++測试框架,被应用于多个开源项目及Google内部项目中,包括Chrome浏览器、LLVM编译器架构、Protocol Buffers数据交换格式及工具、OpenCV计算机视觉库等。

    gtest支持Windows、Linux、Mac OS X、Symbian等操作系统。该篇记录了Windows 10 64位系统下gtest的下载、安装、编译,建立一个測试Demoproject并编写一个简单的測试例程。

    一、准备工作

    gtest下载地址:https://github.com/google/googletest
    编译环境:Visual 2012 Ultimate

    二、编译

    下载googletest-master并解压, 找到msvc文件夹:

    这里写图片描写叙述

    注:从官方说明中指定:Windows Requirements:Microsoft Visual C++ v7.1 or newer,即假设使用Visual C++编译。要求编译器版本号不低于7.1(Visual C++ 2003)。

    打开msvc里面的project文件gtest, 打开后会提示VS版本号较高。须要升级project文件。升完级后,我们直接编译里面的gtestproject,这里发现错误,编译不通过。

    这里写图片描写叙述

    这里写图片描写叙述

    查找了一些配置教程,改动:includegtestgtest.h文件:

    这里写图片描写叙述

    增加:#define _VARIADIC_MAX 10

    这里写图片描写叙述

    再次编译成功,可分别在dubeg和release两种解决方式配置下分别编译:

    这里写图片描写叙述

    这里写图片描写叙述

    这里写图片描写叙述

    三、測试Demo

    新建一个VS 2012控制台程序。然后配置project属性,包括下面几个操作:

    1. 在VC++文件夹下,设置gtest头文件路径和gtest.lib库文件夹。

    这里写图片描写叙述

    1. 在:C/C++ -> 代码生成 -> 执行库,若当前调试的是Debug版本号。则设置为多线程调试(/MTd);若为release。则设置为多线程(/MT)。

    一段演示样例代码:

    #include <gtestgtest.h>
    #include <iostream>
    
    int Foo(int a, int b) // 求a和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)); 
        ASSERT_EQ(5, Foo(2.5, 5));// 失败时。当前函数返回
        EXPECT_EQ(2, Foo(16, 18)); 
    }
    
    int main(int argc, char* argv[])
    {
        testing::InitGoogleTest(&argc, argv);
        return RUN_ALL_TESTS();
    }

    在cmd中执行。结果例如以下:

    这里写图片描写叙述

    当中,用到两个宏(属于EXPECT_* 系列和ASSERT_*系列),使用方法在凝视中大致提到。

    因为学习还不够深入,仅仅能总结出gtest的一些长处:

    1. 可使用一些简单的宏(如:TEST)。这使得编写測试案例变的很easy。

    2. gtest提供了强大丰富的断言的宏。用于对各种不同检查点的检查。
  • 相关阅读:
    安装SQL Server驱动到Maven仓库[转]
    Nuget 摘录
    删除除了Src属性以后的全部属性
    执行NET 命令无法使用超过20个字符的组名或用户名
    在EntityFramework中使用 nock的方法。
    两代码的区别
    SQLServer 执行计划
    win7电脑的账户被禁用了怎么办
    win10防火墙损坏如何修复
    win10摄像头在哪打开?
  • 原文地址:https://www.cnblogs.com/yfceshi/p/7305223.html
Copyright © 2011-2022 走看看