C++单元测试工具——googletest

  在平常的学习和工作中,单元测试是很重要的一环,用于验证代码中最小的可测试单元(通常是函数或方法)是否按照预期工作,单元测试可以帮助开发人员验证代码的正确性和提高代码的可维护性,确保代码的稳定性和可靠性。

官网:https://github.com/google/googletest

1.googletest

  googletest是一个开源的C++测试框架,用于编写和运行单元测试。它是Google开发的一个基于xUnit风格的测试框架,旨在提供简单易用的测试工具和丰富的断言库,帮助开发者编写可靠的单元测试。

  googletest具有以下特点:

  • 简单易用:使用简单的宏和断言函数,可以轻松编写测试用例。
  • 支持多种测试风格:支持传统的测试风格和新的测试风格,如测试夹具(TestFixture)和参数化测试(Parameterized Test)。
  • 丰富的断言库:提供了丰富的断言函数,可以方便地进行测试结果的验证。
  • 支持测试套件和测试用例的管理:可以将多个测试用例组织成测试套件,方便管理和执行。
  • 支持测试结果的输出和报告:可以生成详细的测试结果报告,方便查看测试覆盖率和失败的测试用例。

使用googletest可以帮助开发者编写可靠的单元测试,提高代码的质量和可维护性,广泛应用于C++项目中,被认为是一个优秀的测试框架。

1.1 下载并安装googletest

$ git clone https://gitee.com/boss-dog/googletest.git
$ cd googletest
$ mkdir build
$ cd build
$ cmake -Dgtest_build_tests=on -DCMAKE_INSTALL_PREFIX=. ..
$ make -j`nproc` 
$ make install

官网使用文档说明:https://google.github.io/googletest/

2.使用googletest编写测试用例

在这里插入图片描述
CMakeLists.txt

cmake_minimum_required(VERSION 3.16)
project(MyDemo)

# 设置C++标准
set(CMAKE_CXX_STANDARD 17)

# 添加googletest库
add_subdirectory(googletest)

# 添加可执行文件
add_executable(test_math
    test_math.cpp
    robot_math.cpp
)

# 链接googletest库
target_link_libraries(test_math gtest_main)

robot_math.h

#ifndef ROBOT_MATH_H
#define ROBOT_MATH_H

int add(int a, int b);

int sub(int a, int b);

int multiply(int a, int b);

int divide(int a, int b);

#endif

robot_math.cpp

#include "robot_math.h"

int add(int a, int b)
{
    return a + b;
}

int sub(int a, int b)
{
    return a - b;
}

int multiply(int a, int b)
{
    return a * b;
}

int divide(int a, int b)
{
    return a / b;
}

test_math.cpp

#include <iostream>
#include "robot_math.h"

#include <gtest/gtest.h>

TEST(add, test)
{
    auto res = add(10, 5);
    std::cout << "add res: " << res << std::endl;
}

TEST(sub, test)
{
    auto res = sub(10, 5);
    std::cout << "sub res: " << res << std::endl;
}

TEST(multiply, test)
{
    auto res = multiply(10, 5);
    std::cout << "multiply res: " << res << std::endl;
}

TEST(divide, test)
{
    auto res = divide(10, 5);
    std::cout << "divide res: " << res << std::endl;
}

运行结果:
在这里插入图片描述

  • 7
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

boss-dog

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值