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*