Google Test(gtest) 快速入门

Gogole Test 是一种 C++ 单测框架。本文以 xmake + xrepo 进行构建和包管理为例。

安装

xmake

1xrepo install gtest

集成到项目

xmake

我采用常见布局(src/, /includexmake.lua

首先建立一个目录比如 test,然后此目录中创建 xmake.lua 内容如下:

1add_requires("gtest")
2
3target("unitest")
4    set_kind("binary")
5    add_packages("gtest")
6    set_default(false)
7    add_files("*.cpp")

这其实是创建了一个 sub target, 因此需要 get included to parent level. 方法很简单,root level 的 xmake.lua 增加一行:

includes("test")

然后我们创建几个测试看看:

test/add_test.cpp 3:

1#include <gtest/gtest.h>
2
3TEST(MY_TEST_SUITE, ADD_TEST) { EXPECT_EQ(1 + 1, 2); }

test/main.cpp 6:

1#include <gtest/gtest.h>
2
3int _tmain(int argc, char* argv[]) {
4  testing::InitGoogleTest(&argc, argv);
5  return RUN_ALL_TESTS();
6}

这样,只要执行

1xmake build unitest

即可编译 unitest

执行

1xmake run unitest

即可运行测试

常用操作

禁用一个测试

使用 DISABLED_ 名称前缀可对 Test Suite 或 Test 禁用。

使用 GTEST_SKIP 可按条件禁用

1TEST(Foo, Bar)
2{
3    if (blah)
4        GTEST_SKIP();
5
6    ...
7}

使用命令行参数 --gtest_filter=*foo1*:*foo2*-*bar1*:*bar2* 可在终端运行时禁用。

引用

  1. c++ - GoogleTest: How to skip a test? - Stack Overflow