Skip to content

layout: post title: "google" subtitle: "google" date: 2019-05-21 09:35:11 author: "none" header-img: "img/posts/default_post.jpg" catalog: true tags: - tag


gtest

gtest

https://github.com/google/googletest

编译gtest git clone https://github.com/google/googletest.git cd googletest mkdir mybuild && cd mybuild cmake ../googletest && make

拷贝头文件和静态库文件 头文件路径: googletest/googletest/include/gtest 静态库路径: googletest/mybuild/libgtest.a

简单使用

include/gtest/ lib/libgtest.a test.cpp

#include <gtest/gtest.h>

int foobar(void)
{
    return 1;
}

TEST(foobar, test)
{
    ASSERT_EQ(1, foobar());
}

int main(int argc, char *argv[])
{
    testing::InitGoogleTest(&argc, argv);
    return RUN_ALL_TESTS();
}

编译 g++ test.cpp -Iinclude lib/libgtest.a -lpthread

运行 ./a.out

多文件测试

在单独的一个文件声明main函数, 在其他单独的文件中中定义测试类, 将这些类链接到main目标文件后,gtest能自动捕捉到所有定义的测试类

测试环境

1 全局测试环境

1) 继承class GlobalEnvent: public testing::Environment, 实现SetUp() 和 TearDown() 2) RUN_ALL_TESTS()之前添加testing::AddGlobalTestEnvironment(new GlobalEnvent);

2 测试套件 1) 继承testing::Test类, 实现静态方法SetUpTestCase和TearDownTestCase 2) SetUpTestCase在测试套件中的第一个测试用例运行前调用,TearDownTestCase在最后一个测试用例运行后调用

3 测试案例 1) 继承testing::Test类, 实现方法SetUp和TearDown

TEST_F与TEST

TEST_F 中的F表示Fixture

EXPECT_EQ(val1, val2)

运行

# 列出所有单元测试
--gtest_list_tests

# 过滤条件
--gtest_filter=Test_Cases1*