vscode通过插件一键运行 c++单元测试

gtest使用初探

简介: 本文在 ubuntu18.04 上实现了 googletest 的全局安装,并在一个 demo项目中演示了使用 cmake 引入了该库,实现了在命令行中运行 c++ 单元测试,包括运行单个 TEST 函数。另外通过 vscode 的插件 C++ TestMate, 实现了像 golang 那样的通过点击按钮即可运行单个测试,极大地方便了开发。

一、在命令行中使用googletest

a. 安装

补充文档 gtest详细安装教程

  1. 下载安装包,此命令只会下载源码到 /usr/src
    sudo apt-get install libgtest-dev
  2. 编译并拷贝
# 先去到 /usr/src/gtest 
$sudo cmake && sudo make
# 头文件会自动安装(/usr/include/gtest),但是库文件需要手动拷贝到系统搜索路径下
$sudo cp libgtest* /usr/lib/

b. 在项目中通过cmake引用

  1. 通过cmake 自带的 find_package 包管理命令来引入,以下 cmake文件是一部分,本质上生成 unit test的执行函数和普通的 c++ 可执行文件没有大的区别
find_package(GTest REQUIRED)
include_directories(${GTEST_INCLUDE_DIRS})
add_executable(runTests test/main_test.cpp)
target_link_libraries(runTests ${GTEST_BOTH_LIBRARIES} pthread)
install(TARGETS runTests)

find_package 会通过 /usr/share/cmake-3.25/Modules/FindGTest.cmake 这个文件来查找整个 GTest的库位置。 补充文档,关于 find_package 详细原理

c. 运行

执行完 cmake 和 make install 之后,去到 runTests 文件的安装路径

  • runTests --gtest_list_tests 列出所有的tests
  • runTests --gtest_filter=pico.test1 可以单独跑某个 test
    补充文档, googletest 详细教程

二、配合 vscode 插件一键运行UT

a. 安装和配置插件

在vscode 的插件搜索栏中搜索 googletest, 选择C++ TestMate 安装
配置,在 .vscode/setting中增加编译出来的可执行 test 文件的目录
补充文档 插件具体配置

# 配置成ut执行文件的路径,支持正则匹配
"testMate.cpp.test.advancedExecutables": [{"pattern":"${workspaceFolder}/cxx-lab/install/bin/*Tests"}],

避坑:在我的电脑上,普通的配置(test.executables + test.workingDirectory的模式)没有作用,只有 test.advancedExecutables 有作用,原因未知。

效果图
vscode通过插件一键运行 c++单元测试_第1张图片

该插件,不仅可以运行 ut, 还可以进行 debug 操作,可以说是非常方便了

你可能感兴趣的:(C++,vscode,c++,单元测试)