Google单元测试框架GoogleTest(gtest)
(2018-11-02 21:19:23)分类: 工具 |
安装
cmake CMakeLists.txt
make
生成两个静态库:libgtest.a
libgtest_main.a
sudo cp libgtest*.a
/usr/lib
sudo cp -r googletest/include
/usr/include
写测试程序时 #include < gtest/gtest.h
>
g++ -g sample.c
sample_unittest.cc -o
test -lgtest -lgtest_main -lpthread
术语
注意命名的区别:gtest中的TestCase实际上是通常意义下的TestSuite,Test是通常意义下的TestCase。test
fixture的意义倒是一致。
Assertion
assertion有三种状态:success,nonfatal
failure和fatal failure。
ASSERT_xxx : 产生fatal
failure,如果当前点检测失败则退出当前函数。
EXPECT_xxx : 产生nonfatal
failure,如果当前点检测失败则继续执行。
可以通过operator <<
在失败的时候打印附加信息。
注册测试
* 使用TEST()宏定义test function
TEST(TestCaseName, TestName)
{
}
第一个参数是TestCase的名字,第二个参数是Test的名字。它们不能带下划线。
* 使用test
fixture复用配置
(1)
使用::testing::Test派生一个test fixture类。
(2)
在这个测试类中用protected来引导并声明测试目标。
(3)
如果需要,提供默认构造/析构函数或者SetUp()/TearDown()函数来准备和释放资源。
(4) 如果需要,定义被Tests共享的子程序。
(5) 使用TEST_F()来定义test
function:
TEST_F(TestCaseName, TestName) {
}
TestCaseName需要用定义的test fixture类。
gtest会对由TEST_F()定义的每个Test在运行时生成一个全新的test
fixture。在同一个TestCaseName下,不同的TestName有不同的test fixture。
*
使用参数化方案
(1)
使用testing::TestWithParam< T
>派生类,其中T是需要参数化的参数类型。
(2) 使用TEST_P()定义test
function。在TEST_P()宏里,使用GetParam()获取当前的参数的具体值。
(3)
使用INSTANTIATE_TEST_CASE_P()来定义要测试的参数范围。
第一个参数是TestCase的前缀,可以任意取。
第二个参数是TestCase的名称,需要和之前定义的参数化的类的名称相同。
第三个参数可以理解为参数生成器。
触发测试
int main(int argc, char **argv)
{
}
或者在编译的时候链接libgtest_main.a库
gtest的安装和使用
玩转Google开源C++单元测试框架Google
Test系列(gtest)
前一篇:齐次坐标系与仿射变换
后一篇:卷积神经网络