一 、前言 “深入解析”对我来说的确有些难度,所以我尽量将我学习到和观察到的 gtest内部实现介绍给大家
本文算是抛砖引玉吧,只能是对 gtest的整体结构的一些介绍,想要了解更多细节最好的办法还是看 gtest源码,如果你看过 gtest源码,你会发现里面的注释非常的详细
好了,下面就开始了解 gtest吧
二、从 TEST宏开始 前面的文章已经介绍过 TEST宏的用法了,通过 TEST宏,我们可以非法简单、方便的编写测试案例,比如: TEST(FooTest, Demo) { EXPECT_EQ(1, 1); } 我们先不去看 TEST宏的定义,而是先使用/P参数将 TEST展开
如果使用的是 Vistual Studio的话: 1
选中需要展开的代码文件,右键 - 属性 - C/C++ - Preprocessor 2
Generate Preprocessed File 设置 Without Line Numbers (/EP /P) 或 With Line Numbers (/P) 3
关闭属性对话框,右键选中需要展开的文件,右键菜单中点击:Compile 编译过后,会在源代码目录生成一个后缀为
i的文件,比如我对上面的代码进行展开,展开后的内容为: class FooTest_Demo_Test : public ::testing::Test { public: FooTest_Demo_Test() {} private: virtual void TestBody(); static ::testing::TestInfo* const test_info_; FooTest_Demo_Test(const FooTest_Demo_Test &); void operator=(const FooTest_Demo_Test &); }; ::