栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

GoogleTest入门使用(基于CMake)

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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 
#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的细节可以参考其官方文档。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/291638.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号