GoogleTest入门使用(基于CMake)

GoogleTest是谷歌推出的C++测试框架,本文讲述如何使用GoogleTest去测试程序,基于CMake搭建框架来阐述具体步骤。

运行环境是Debian 10(安装在虚拟机里),GoogleTest版本是1.11.0,使用VSCode的远程SSH连接Debian 10


一 下载GoogleTest

首先创建目录gtest_test并cd进入,然后使用下面命令下载GoogleTest,

git clone -b release-1.11.0 https://github.com/google/googletest.git

二 搭建工程

工程的整体结构如下,
在这里插入图片描述
src目录里是待测的源代码,test目录里是测试用例,整体工程使用CMake来控制。

gtest_test目录下的CMakeLists.txt控制全局,其内容如下,

cmake_minimum_required(VERSION 3.5)

project(demo)


set(CMAKE_C_STANDARD 99)
set(CMAKE_CXX_STANDARD 11)
set(CMAKE_POSITION_INDEPENDENT_CODE ON)

include_directories(src)

enable_testing()

# 编译googletest
add_subdirectory(googletest)

# 把待测源码编译成一个静态库
add_library(mycode STATIC src/mycode.cpp src/mycode.h)

# 编译测试用例
add_subdirectory(test)

test目录下的CMakeLists.txt内容如下,

cmake_minimum_required(VERSION 3.5)


set(This ExampleTest)

set (Sources
    ExampleTest.cpp
)

add_executable(${This} ${Sources})

# 链接gtest库和我们的mycode库
target_link_libraries(${This} PUBLIC
    gtest_main
    mycode
)

add_test(
    NAME ${This}
    COMMAND ${This}
)

最后的add_test是为了使用ctest来执行测试用例,也可以不加,后面会讲述。

src/mycode.h内容如下,

#ifndef __MY_CODE_H__
#define __MY_CODE_H__

bool func(void);

#endif

src/mycode.cpp内容如下,

#include "mycode.h"

bool func(void)
{
    return true;
}

test/ExampleTest.cpp内容如下,只是测试mycode提供的函数func()

#include <gtest/gtest.h>
#include "mycode.h"

TEST(ExampleTest, SimpleFirstTest)
{
    EXPECT_TRUE(func());
}

这里使用了gtest提供的TEST()和EXPECT_TRUE()


三 运行测试用例

有2种方法,

1. 手动运行

cd到build目录,执行下面命令,

cmake .. && make

OK后,运行测试用例,

./test/ExampleTest

结果如下,
在这里插入图片描述

2. 自动运行

需要先在VSCode里安装CMake Tools的扩展,
在这里插入图片描述
工程搭建好之后,按F7进行编译,然后在VSCode下面的工具栏里找到 Run CTest,
在这里插入图片描述
点击运行,如下,
在这里插入图片描述
而且会显示1/1 test passing,前面的1是指1个test case,后面的1是指1个test suite;一个test suite里可以包含多个test case。

感觉手动运行效果更好点,有颜色提示,如果出错,会出现红色。


四 总结

本文讲述了GoogleTest的简单入门使用,基于CMake,可以看出还是比较好用的。关于这个GoogleTest的细节可以参考其官方文档。

CMake是一个跨平台的开源构建工具,可以用于自动生成各种编译环境和Makefile。它可以帮助开发者更方便地管理和构建项目。而GoogleTest是Google开发的一个C++测试框架,用于编写单元测试。 使用CMakeGoogleTest来进行单元测试的步骤如下: 1. 首先,在项目根目录下创建一个目录,例如gtest_test,并进入该目录。 2. 使用git命令下载GoogleTest的源代码,可以使用以下命令:`git clone -b release-1.11.0 https://github.com/google/googletest.git` 3. 在gtest_test目录下创建一个CMakeLists.txt文件,用于配置项目的构建参数和添加依赖。 4. 在CMakeLists.txt文件中,使用`add_subdirectory(googletest)`命令将GoogleTest添加到项目中。 5. 使用`add_library(mycode STATIC src/mycode.cpp src/mycode.h)`命令将待测源码编译成一个静态库。 6. 在test目录下创建一个CMakeLists.txt文件,并使用`add_subdirectory("src")`命令将test/src下的文件添加到项目中。 7. 在test/src目录下创建一个CMakeLists.txt文件,并使用`add_subdirectory("util")`命令将test/src/util下的文件添加到项目中。 8. 在工程根目录创建一个build文件夹,并进入该文件夹。 9. 使用`cmake ..`命令生成Makefile。 10. 使用`make`命令编译项目生成可执行文件。 11. 使用`./test/src/util/SrcUtilTest`命令执行编译好的二进制文件,执行当前目录下的所有单元测试用例。 以上是使用CMakeGoogleTest进行单元测试的一般步骤。你可以根据需要适配你的项目,具体的配置和使用方式可以参考官方文档和示例代码。<span class="em">1</span><span class="em">2</span><span class="em">3</span><span class="em">4</span>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值