Gtest是Google公司发布的一款非常优秀的开源C/C++单元测试框架,已被应用于多个开源项目及Google内部项目中,知名的例子包括ChromeWeb浏览器、LLVM编译器架构、ProtocolBuffers数据交换格式及工具等。在我们开发规范的代码时候,要想办法构造简单的测试用例进行调试,因此针对gtest中的三种事件机制进行简单的分析。
在单元测试中,我们经常需要在某个测试套件、测试用例或者整个测试运行之前进行前置条件设置及检查,或者运行之后对运行结果进行校验等操作。在gtest中,称之为事件机制。gtest将事件按照作用的范围不同进行划分,从大到小总共分为3个层次:
- 整个测试层面,即在测试工程开始前和结束后进行
- 测试套件层面,即在某个测试套件开始前和结束后进行
- 测试用例层面,即在某个测试用例开始前和结束后进行
在Ubuntu中安装gtest
依次使用以下指令即可安装gtest:
git clone https://github.com/google/googletest.git
cd googletest
mkdir build
cd build
cmake ..
make
sudo make install
gtest使用
在某个文件夹中,新建deepinout.com.cpp文件,输入以下代码:
#include <gtest/gtest.h>
int Foo(int a,int b) {
if(0 == a||0 == b) {
throw "don't do that";
}
int c = a % b;
if (0 == c) {
return b;
}
return Foo(b, c);
}
TEST(FooTest, HandleNoneZeroInput) {
EXPECT_EQ(2, Foo(4,10));
EXPECT_EQ(6, Foo(30,18));
}
int main(int argc,char*argv[]) {
testing::InitGoogleTest(&argc,argv);
return RUN_ALL_TESTS();
}
在命令终端编译构建该文件:
g++ -std=c++11 deepinout.com.cpp -lgtest -lpthread
./a.out
此时可看到上述单元测试的执行结果:
说明两个测试案例均成功执行。