Google Test是C++常用单元测试框架,支持断言、参数化测试等。通过包管理器或GitHub源码安装后,用TEST宏编写测试用例,结合CMake构建工程,使用EXPECT_EQ、ASSERT_EQ等断言验证结果,支持参数化测试以减少重复代码,便于集成CI提升代码质量。

Google Test(简称gtest)是C++中广泛使用的单元测试框架,由Google开发并开源。它支持多种测试类型,包括断言、参数化测试、死亡测试等,适合用于中小型项目的质量保障。
1. 安装与配置Google Test
在使用Google Test前,需要先安装并配置好环境。以下是Linux下通过CMake构建的典型流程:
方法一:使用包管理器(Ubuntu)
可以直接用apt安装gtest开发库:
sudo apt-get install libgtest-dev cmake
然后进入目录编译静态库:
立即学习“C++免费学习笔记(深入)”;
cd /usr/src/googletestsudo cmake CMakeLists.txtsudo makesudo cp *.a /usr/lib
方法二:从GitHub源码构建(推荐)
将Google Test作为项目子模块集成,便于版本控制:
git clone https://github.com/google/googletest.gitcd googletestmkdir build && cd buildcmake ..make -j
生成的库可用于后续链接。
2. 编写第一个测试用例
假设你有一个简单函数需要测试:
// math_utils.h#pragma onceint add(int a, int b);
// math_utils.cpp#include "math_utils.h"int add(int a, int b) { return a + b;}
编写对应的测试文件:
// test_math.cpp#include #include "math_utils.h"TEST(MathTest, AddPositiveNumbers) {EXPECT_EQ(add(2, 3), 5);EXPECT_EQ(add(0, 0), 0);}
TEST(MathTest, AddNegativeNumbers) {EXPECT_EQ(add(-1, -1), -2);EXPECT_EQ(add(-5, 3), -2);}
这里TEST宏定义了一个测试用例,格式为TEST(测试套件名, 测试名称)。
3. 使用CMake构建测试工程
创建CMakeLists.txt整合源码与测试:
cmake_minimum_required(VERSION 3.14)project(MyTestProject)启用C++17
set(CMAKE_CXX_STANDARD 17)
添加源文件
add_library(math_utils math_utils.cpp)
查找或添加Google Test
add_subdirectory(googletest)enable_testing()
添加可执行测试程序
add_executable(test_math test_math.cpp)target_link_libraries(test_math gtest_main math_utils)
注册测试
add_test(NAME MathTestRunner COMMAND test_math)
执行构建:
mkdir build && cd buildcmake ..make./test_math
如果所有断言通过,输出会显示测试成功。
4. 常用断言与高级功能
Google Test提供丰富的断言宏:
EXPECT_EQ(a, b):期望a等于b,失败不中断ASSERT_EQ(a, b):必须相等,失败则终止当前测试EXPECT_TRUE(condition):条件应为真EXPECT_STREQ(s1, s2):比较C风格字符串相等EXPECT_NEAR(val1, val2, abs_error):浮点数近似比较
支持参数化测试,避免重复代码:
class AddTest : public ::testing::TestWithParam<std::tuple> {};TEST_P(AddTest, HandlesVariousInputs) {auto [input_a, input_b, expected] = GetParam();EXPECT_EQ(add(input_a, input_b), expected);}
INSTANTIATE_TEST_SUITE_P(NormalCases, AddTest,::testing::Values(std::make_tuple(2, 3, 5),std::make_tuple(-1, 1, 0),std::make_tuple(0, 0, 0)));
基本上就这些。熟练掌握后,可以结合CI工具自动化运行测试,提升代码可靠性。
以上就是C++如何使用Google Test进行单元测试_C++ Google Test单元测试方法的详细内容,更多请关注创想鸟其它相关文章!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1476703.html
微信扫一扫
支付宝扫一扫