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的1.3和1.6两个版本,适合不同需求的开发者使用。下面将详细介绍gtest框架及其相关知识点。 1. **单元测试的重要性** 单元测试是软件开发过程中的重要环节,它允许开发者对代码的各个部分...
通过安装C++和gtest相关的插件,如"C/C++"和"Google Test Explorer",可以实现gtest测试的集成,便于编写、运行和调试测试用例。 2. **Google Test (gtest)**:gtest是Google开发的一个开源单元测试框架,它使得C++...
3. **测试套件**:多个相关测试用例可以组织到一个测试套件中,方便管理和运行。 4. **测试控制**:gtest支持跳过测试、设置测试失败后的行为,甚至可以编写自定义的测试事件监听器。 5. **输出报告**:gtest会...
学习GTest 一些学习Google C++ Testing Framework简单示例。 make_sample 将Makefile与Google C++ Testing Framework集成的简单示例。 cmake_sample 将CMake与Google C++ Testing Framework集成的简单示例。 参考...
GTest-扩展 谷歌测试扩展 包括: 谷歌测试内存泄漏监听器 在 Microsoft Visual Studio 中对 Google Test 进行简单的内存泄漏检查。 使用 Microsoft 内存检查 CRT 工具。 请参阅: : 谷歌测试字符串错误格式 增强...
GoogleTest,又称为gtest,是Google开发的一个开源的C++测试框架,用于编写单元测试。它提供了丰富的断言、测试套件、测试用例和参数化测试等功能,使得C++的单元测试变得简单而强大。在本教程中,我们将深入探讨...
`MyGtest测试示例.zip` 是一个包含Google Test(gtest)框架的实践示例,主要用于学习和练习单元测试的基本用法和高级...对于那些想进一步熟悉gtest或者想要提高测试效率的开发者来说,这是一个很有价值的学习材料。
这个压缩包包含的资源显然是关于gtest的学习材料,可能包括官方文档、示例代码和其他教程资源。尽管是英文版,但根据描述,即使对于英语水平一般的开发者来说,理解起来也并不困难。 **Google Test基础知识** ...
2、第一章的主要内容为:GTest的基本使用,包括下载,安装,编译等。 3、该资源以测试Demo为案例,作为参考资料学习借鉴。案例描述清晰,便于各位技术爱好者理解。 4、之后会陆续更新全部教程。 5、使用GTest工具...
这种参考资料对于开发者来说是至关重要的,因为它提供了编写整洁、一致代码的标准。 描述中提到“References to non-style modules used by the style package”,这意味着该压缩包可能包含了style package在运行时...
- "Modern C++ Testing with Google Test and Google Mock":一本关于gmock和gtest的书籍,深入介绍了测试技巧和策略。 通过理解并熟练使用gmock,开发者可以编写出更加健壮和可靠的C++代码,提升软件质量。在实践...
这份"Linux C++面试资料"显然是为了帮助求职者准备相关面试而设计的。以下将根据标题、描述以及标签,深入探讨C++在Linux环境中的关键知识点。 一、C++基础知识 C++是一种静态类型的、编译式的、通用的、大小写...
请参阅参考资料以获取有关Boost库的更多信息: 安装 如果您要从源代码编译该软件包,以下部分将介绍如何为该软件包准备系统。 Linux(Ubuntu 14.04) 如果尚未安装git,请安装: sudo apt-get install git 确保已...
文档指出学习OceanBase的第一步是获取相关资料。这里提供了两个链接: 1. 产品文档链接:*** ** 设计文档和其他学习资料链接:*** *** 关于安装部署 在掌握了一定的OceanBase知识之后,文档通过《OceanBase 0.4.2...
标题中的“c++下载数据zip压缩宝”暗示了这是一个与C++编程语言相关的资源包,且以ZIP格式压缩,可能包含用于学习、开发或实践C++的代码、库、教程或其他相关材料。描述简单地提到“c++下载包”,表明这可能是一个...
9. **单元测试与持续集成**:现代软件开发强调测试驱动,资料可能包含如何使用如gtest这样的单元测试框架,以及如何实现持续集成以确保代码质量。 10. **性能优化**:C++允许低级优化,如手动内存管理、内联函数、...
标题 "LJ-_001: 第一个资料库,用于资料存储" 提示我们这是一个关于数据存储的项目,可能是为了组织、管理和检索信息而创建的一个数据库。在IT领域,数据库是至关重要的,它们用于存储、处理和管理大量结构化或半...
- 面向测试的编程:单元测试、集成测试的实践,使用GTest等测试框架。 这份《C&C++语言大全2011-11-25》资料集涵盖了C和C++编程的基础到高级知识,适合初学者及有一定经验的开发者作为参考资料,帮助他们深入理解...
11. **Educational Project**: 作为教育项目,此保龄球服务可能包含教学材料、练习和挑战,帮助学生将理论知识应用于实际编程实践中。 12. **CodereviewC++**: 这可能是代码审查社区或者资源,学习者可以在其中分享...
10. **26_testing.ppt** - 测试是软件开发的重要环节,这部分可能讲解了单元测试、集成测试和静态分析工具的使用,以及C++中如`gtest`这样的测试框架。 通过学习这些内容,读者不仅可以掌握C++的基础,还能深入理解...