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