前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【C++】开源:单元测试框架gtest配置使用

【C++】开源:单元测试框架gtest配置使用

作者头像
DevFrank
发布2024-07-24 15:44:58
1070
发布2024-07-24 15:44:58
举报
文章被收录于专栏:C++开发学习交流

😏1. 项目介绍

项目Github地址:https://github.com/google/googletest.git

Google Test(简称为 gtest)是一个流行的 C++ 测试框架,用于编写和执行单元测试、集成测试和功能测试。它是 Google 开发的开源项目,旨在提供简单、灵活和可扩展的测试解决方案。以下是对 Google Test 的一些重要特点和功能的介绍:

1.易于入门和使用:Google Test 提供了简洁而直观的 API,使得编写和运行测试用例非常容易。它遵循 xUnit 风格的测试框架设计,并提供了丰富的断言宏来验证预期结果。

2.支持多种测试类型:Google Test 支持单元测试、集成测试和功能测试。你可以使用它来编写针对函数、类、模块或整个应用程序的测试。

3.参数化测试:Google Test 允许你使用参数化测试来覆盖不同的输入和参数组合。你可以使用 TEST_P 和 INSTANTIATE_TEST_SUITE_P 宏来定义和实例化参数化测试。

4.固件(Fixture)支持:Google Test 支持测试固件的概念,允许你在测试之前和之后设置和清理共享资源。通过使用 TEST_F 宏定义测试固件,可以方便地在多个测试用例之间共享初始化和清理代码。

5.丰富的断言:Google Test 提供了丰富的断言宏来验证预期结果。例如,你可以使用 EXPECT_EQ 来检查两个值是否相等,或使用 EXPECT_TRUE 来验证条件是否为真。

6.输出详细信息:Google Test 在测试运行过程中会生成详细的输出信息,包括测试结果、失败原因和附加信息等。这些信息有助于诊断问题和快速修复错误。

7.可扩展性:Google Test 具有良好的可扩展性,允许你编写自定义的测试扩展和辅助函数。你可以根据需要创建自己的断言宏、打印函数和参数生成器等。

8.平台支持:Google Test 支持多种平台和编译器,包括 Windows、Linux、macOS 和各种 C++ 编译器。

😊2. 环境配置

下面进行环境配置:

代码语言:javascript
复制
# apt安装
sudo apt install libgtest-dev
# 编译运行
g++ -o main main.cpp test.cpp -lgtest -lgtest_main -pthread  && ./main

😆3. 使用说明

gtest使用示例(通过判断等于EQ、对错TRUE来输出单元测试结果):

代码语言:javascript
复制
// test.h
#ifndef MATH_UTILS_H
#define MATH_UTILS_H

int Add(int a, int b);
int Subtract(int a, int b);
bool IsPrime(int number);

#endif // MATH_UTILS_H
代码语言:javascript
复制
// test.cpp
#include "test.h"

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

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

bool IsPrime(int number) {
  if (number < 2) {
    return false;
  }
  for (int i = 2; i <= number / 2; ++i) {
    if (number % i == 0) {
      return false;
    }
  }
  return true;
}
代码语言:javascript
复制
// main.cpp
#include "gtest/gtest.h"
#include "test.h"

// 测试 Add() 函数
TEST(MathUtilsTest, AddTest) {
  EXPECT_EQ(4, Add(2, 2));
  EXPECT_EQ(-1, Add(2, -3));
  EXPECT_EQ(10, Add(5, 5));
}

// 测试 Subtract() 函数
TEST(MathUtilsTest, SubtractTest) {
  EXPECT_EQ(2, Subtract(5, 3));
  EXPECT_EQ(-5, Subtract(0, 5));
  EXPECT_EQ(0, Subtract(10, 10));
}

// 测试 IsPrime() 函数
TEST(MathUtilsTest, IsPrimeTest) {
  EXPECT_TRUE(IsPrime(2));
  EXPECT_TRUE(IsPrime(3));
  EXPECT_FALSE(IsPrime(4));
  EXPECT_TRUE(IsPrime(5));
  EXPECT_FALSE(IsPrime(6));
  EXPECT_TRUE(IsPrime(7));
}

int main(int argc, char** argv) {
  testing::InitGoogleTest(&argc, argv);
  /* 用TEST宏定义测试用例,验证函数的行为和结果是否符合预期 */
  return RUN_ALL_TESTS();
}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-07-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 😏1. 项目介绍
  • 😊2. 环境配置
  • 😆3. 使用说明
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档