`

Gtest相关材料

阅读更多

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

 

#include "gtest/gtest.h"

extern "C" {//C functions in C++
    #include "common.h"
    #include "util.h"
}

static MemSpace* ams=NULL;
static HashTable* table=NULL;
static FILE* directoryFp = NULL;
static const UInt32 DIRECTORY_FILE_LINE_SIZE = 98568;
#define DIRECTORY_DATA_SIZE (1024)
static char DIRECTORY_DATA[100000][DIRECTORY_DATA_SIZE];

static void resetDirectoryFP()
{
    fseek(directoryFp, 0L, SEEK_SET);
}

/*
 * 测试用例级别包裹
 */
class HashTest : public testing::Test
{
    protected:
        virtual void SetUp()
        {
            ams = memSpaceCreate();
            table = hashTableCreate(ams, StringHashFuncHook, StringHashCmpHook);
        }
        virtual void TearDown()
        {
            freeMemSpace(ams);
        }
};

/*
 * 整个运行前后包裹
 */
class HashEnvironment : public testing::Environment
{
    public:
        virtual ~HashEnvironment() {}
        virtual void SetUp()
        {
            char filename[1024];
            sprintf(filename, "%s/%s",__TEST_RES_DIR__,"american-english.txt");
            directoryFp = fopen(filename, "r");
            UInt32 tot = 0;
            while(fgets(DIRECTORY_DATA[tot], DIRECTORY_DATA_SIZE, directoryFp)){
                tot ++;
            }
            EXPECT_EQ(DIRECTORY_FILE_LINE_SIZE, tot);
            fclose(directoryFp);
        }
        virtual void TearDown()
        {
        }
};

/*
 * TEST_F 会进行包裹: 需要与
 * class HashTest : public testing::Test
 * HashTest 名字一致
 */
TEST_F(HashTest, Create)
{
    EXPECT_TRUE(NULL!=ams);
    EXPECT_TRUE(NULL!=table);
}

TEST_F(HashTest, Contain)
{
    UInt32 i;
    i = 0;
    while(i<DIRECTORY_FILE_LINE_SIZE){
        EXPECT_FALSE(HashTableContain(table, DIRECTORY_DATA[i]));
        i ++;
    }
}

TEST_F(HashTest, Insert)
{
    UInt32 i;
    i = 0;
    while(i<DIRECTORY_FILE_LINE_SIZE){
        EXPECT_TRUE(HashTableInsert(table, DIRECTORY_DATA[i]));
        i ++;
    }

    i = 0;
    while(i<DIRECTORY_FILE_LINE_SIZE){
        EXPECT_TRUE(HashTableContain(table, DIRECTORY_DATA[i]));
        i ++;
    }
}


int main(int argc, char* argv[])
{
    /*
     * 这个是整个用例跑前跑后的状态设置
     */
    testing::AddGlobalTestEnvironment(new HashEnvironment);
    testing::InitGoogleTest(&argc, argv);
    return RUN_ALL_TESTS();
}
 
分享到:
评论

相关推荐

    gtest全套学习资料

    本套学习资料包含了gtest的1.3和1.6两个版本,适合不同需求的开发者使用。下面将详细介绍gtest框架及其相关知识点。 1. **单元测试的重要性** 单元测试是软件开发过程中的重要环节,它允许开发者对代码的各个部分...

    vscode+gtest+cmake

    通过安装C++和gtest相关的插件,如"C/C++"和"Google Test Explorer",可以实现gtest测试的集成,便于编写、运行和调试测试用例。 2. **Google Test (gtest)**:gtest是Google开发的一个开源单元测试框架,它使得C++...

    gtest&gmock资料

    3. **测试套件**:多个相关测试用例可以组织到一个测试套件中,方便管理和运行。 4. **测试控制**:gtest支持跳过测试、设置测试失败后的行为,甚至可以编写自定义的测试事件监听器。 5. **输出报告**:gtest会...

    learning-gtest:谷歌C++测试框架学习笔记

    学习GTest 一些学习Google C++ Testing Framework简单示例。 make_sample 将Makefile与Google C++ Testing Framework集成的简单示例。 cmake_sample 将CMake与Google C++ Testing Framework集成的简单示例。 参考...

    gtest-extensions:谷歌测试内存泄漏监听器

    GTest-扩展 谷歌测试扩展 包括: 谷歌测试内存泄漏监听器 在 Microsoft Visual Studio 中对 Google Test 进行简单的内存泄漏检查。 使用 Microsoft 内存检查 CRT 工具。 请参阅: : 谷歌测试字符串错误格式 增强...

    GoogleTest基础进阶

    GoogleTest,又称为gtest,是Google开发的一个开源的C++测试框架,用于编写单元测试。它提供了丰富的断言、测试套件、测试用例和参数化测试等功能,使得C++的单元测试变得简单而强大。在本教程中,我们将深入探讨...

    MyGtest测试示例.zip

    `MyGtest测试示例.zip` 是一个包含Google Test(gtest)框架的实践示例,主要用于学习和练习单元测试的基本用法和高级...对于那些想进一步熟悉gtest或者想要提高测试效率的开发者来说,这是一个很有价值的学习材料。

    googletest资料

    这个压缩包包含的资源显然是关于gtest的学习材料,可能包括官方文档、示例代码和其他教程资源。尽管是英文版,但根据描述,即使对于英语水平一般的开发者来说,理解起来也并不困难。 **Google Test基础知识** ...

    Google开源C++单元测试框架Google Test教程 第1章

    2、第一章的主要内容为:GTest的基本使用,包括下载,安装,编译等。 3、该资源以测试Demo为案例,作为参考资料学习借鉴。案例描述清晰,便于各位技术爱好者理解。 4、之后会陆续更新全部教程。 5、使用GTest工具...

    style_references.rar_style

    这种参考资料对于开发者来说是至关重要的,因为它提供了编写整洁、一致代码的标准。 描述中提到“References to non-style modules used by the style package”,这意味着该压缩包可能包含了style package在运行时...

    gmock相关资料和笔记

    - "Modern C++ Testing with Google Test and Google Mock":一本关于gmock和gtest的书籍,深入介绍了测试技巧和策略。 通过理解并熟练使用gmock,开发者可以编写出更加健壮和可靠的C++代码,提升软件质量。在实践...

    c++Linux面试资料

    这份"Linux C++面试资料"显然是为了帮助求职者准备相关面试而设计的。以下将根据标题、描述以及标签,深入探讨C++在Linux环境中的关键知识点。 一、C++基础知识 C++是一种静态类型的、编译式的、通用的、大小写...

    ionospheric-ray-tracer:通过使用射线追踪方法模拟行星电离层中无线电波的行为

    请参阅参考资料以获取有关Boost库的更多信息: 安装 如果您要从源代码编译该软件包,以下部分将介绍如何为该软件包准备系统。 Linux(Ubuntu 14.04) 如果尚未安装git,请安装: sudo apt-get install git 确保已...

    OceanBase 0.4.2 快速入门.pdf

    文档指出学习OceanBase的第一步是获取相关资料。这里提供了两个链接: 1. 产品文档链接:*** ** 设计文档和其他学习资料链接:*** *** 关于安装部署 在掌握了一定的OceanBase知识之后,文档通过《OceanBase 0.4.2...

    c++下载数据zip压缩宝

    标题中的“c++下载数据zip压缩宝”暗示了这是一个与C++编程语言相关的资源包,且以ZIP格式压缩,可能包含用于学习、开发或实践C++的代码、库、教程或其他相关材料。描述简单地提到“c++下载包”,表明这可能是一个...

    好东西!c++时尚设计百例!

    9. **单元测试与持续集成**:现代软件开发强调测试驱动,资料可能包含如何使用如gtest这样的单元测试框架,以及如何实现持续集成以确保代码质量。 10. **性能优化**:C++允许低级优化,如手动内存管理、内联函数、...

    LJ-_001:第一个资料库,用于资料存储

    标题 "LJ-_001: 第一个资料库,用于资料存储" 提示我们这是一个关于数据存储的项目,可能是为了组织、管理和检索信息而创建的一个数据库。在IT领域,数据库是至关重要的,它们用于存储、处理和管理大量结构化或半...

    C&C++语言大全2011-11-25]

    - 面向测试的编程:单元测试、集成测试的实践,使用GTest等测试框架。 这份《C&C++语言大全2011-11-25》资料集涵盖了C和C++编程的基础到高级知识,适合初学者及有一定经验的开发者作为参考资料,帮助他们深入理解...

    保龄球:教育项目-保龄球服务,可容纳6人

    11. **Educational Project**: 作为教育项目,此保龄球服务可能包含教学材料、练习和挑战,帮助学生将理论知识应用于实际编程实践中。 12. **CodereviewC++**: 这可能是代码审查社区或者资源,学习者可以在其中分享...

    C++程序设计原理与实践英文讲义之二

    10. **26_testing.ppt** - 测试是软件开发的重要环节,这部分可能讲解了单元测试、集成测试和静态分析工具的使用,以及C++中如`gtest`这样的测试框架。 通过学习这些内容,读者不仅可以掌握C++的基础,还能深入理解...

Global site tag (gtag.js) - Google Analytics