快速上手 GoogleTest是Google的一套用于编写 C++测试的框架,可以运行在多个平台上(包括Linux、MacOS X、Windows、Cygwin等)。 ---- 搭建测试框架 GTest的项目地址:https://github.com/google/googletest ---- 安装流程如下: git clone https://github.com /google/googletest.git cd googletest mkdir build cd build cmake … make sudo make install ---- 注意: linux make[1]: *** [googletest/CMakeFiles/gtest.dir/all] Error 2#3639 安装gcc-5(或更高版本),Ubuntu20.04安装gcc
googletest是一个用来写C++单元测试的框架,它是跨平台的,可应用在windows、Linux、Mac等OS平台上。下面,我来说明如何使用最新的1.6版本gtest写自己的单元测试。 本文包括以下几部分:1、获取并编译googletest(以下简称为gtest);2、如何编写单元测试用例;3、如何执行单元测试。4、google test内部是如何执行我们的单元测试用例的。 1. 源码的获取地址:http://code.google.com/p/googletest/downloads/list 目前gtest提供的是1.6.0版本,我们看看与以往版本1.5.0的区别: Changes
C++ 项目之Googletest单元测试 1.Clion集成Googletest单元测试 Googletest - Google Testing and Mocking Framework 源码下载地址 : https://github.com/google/googletest/releases Googletest中包含两个模块,分别是gtest与gmock,需要分别源码编译,编译完后,到指定目录去拷贝 上述本地项目路径配置好后,在CmakeLists.txt中进行配置: # ext set(BASE_INCLUDES ext/includes) set(BASE_LIBS ext/libs) # googletest
快速入门:使用 CMake 进行构建 关于GoogleTest和CMake结合使用,可以参照GoogleTest官方文档Quickstart: Building with CMake 特此记录一下 相关资料 Quickstart: Building with CMake GoogleTest for CMake Setting up CMake for Google Test GoogleTest-Modern
编译官方 GoogleTest 下载官方源码 git clone git@github.com:google/googletest.git cmake 编译源码 cd googletest-release 的步骤,详细构建可查看官网文档 ---- 这里的重点的是怎么在嵌入式平台上(Amlogic A113x 平台)构建GoogleTest 基本思路: 使用arm交叉编译器编译GoogleTest, 生成可调用的动态库 ,应用层通过调用GoogleTest动态库完成测试用例的编写 指定arm交叉编译器 GoogleTest默认使用CMake构建,这里通过修改googletest-release-1.8.0/googletest 还是修改`googletest-release-1.8.0/googletest/CMakeLists.txt option(BUILD_SHARED_LIBS "Build shared libraries ---- 参考 嵌入式平台使用gtest进行白盒测试 gtest 编译、安装和使用 Testing C++ code with the GoogleTest framework GoogleTest
本教程分成以下部分: GoogleTest 入门(GoogleTest Primer) - 教你如何使用 GoogleTest 编写简单的测试。如果你是 GoogleTest 新手,请先阅读此部分。 GoogleTest 高级教程(GoogleTest Advanced) - 当你完成入门教程并想充分利用 GoogleTest 时,请阅读此部分。 GoogleTest 示例(GoogleTest Samples) - 介绍一些 GoogleTest 示例。 GoogleTest 常见问题解答(GoogleTest FAQ)- 有问题吗? FetchContent_MakeAvailable(googletest):获取并使 GoogleTest 可用。 2. 用户指南:GoogleTest User’s Guide | GoogleTest
Windows10中在Visual Studio2017中VC++项目安装使用GoogleTest库 在Windows10中VC++程序中可以不用自己手动下载GoogleTest源代码,可以直接通过【项目 】-> 【管理 NuGet 程序包】-> 【浏览】-> 搜索 googletest, 找到Microsoft.googletest.v140.windesktop.msvcstl.static.rt-dyn 1.创建一个VC++控制台应用程序 2.安装googletest包 在C++中通常需要通过自己源代码编译第三方库比如载GoogleTest等,然后在自己的项目中添加头文件和lib库文件的路径。 我们在自己的VC++控制台程序中,可以选择菜单【项目】-> 【管理 NuGet 程序包】-> 【浏览】-> 搜索 googletest, 找到Microsoft.googletest.v140.windesktop.msvcstl.static.rt-dyn ,版本号为:1.8.1.7,同时在项目所在路径多出一个packages文件夹: 里面有库的头文件和相关lib库 使用googletest 安装Microsoft.googletest.v140.
Windows10中在Visual Studio2017中VC++项目安装使用GoogleTest库 在Windows10中VC++程序中可以不用自己手动下载GoogleTest源代码,可以直接通过【项目 】-> 【管理 NuGet 程序包】-> 【浏览】-> 搜索 googletest, 找到Microsoft.googletest.v140.windesktop.msvcstl.static.rt-dyn 1.创建一个VC++控制台应用程序 2.安装googletest包 在C++中通常需要通过自己源代码编译第三方库比如载GoogleTest等,然后在自己的项目中添加头文件和lib库文件的路径。 我们在自己的VC++控制台程序中,可以选择菜单【项目】-> 【管理 NuGet 程序包】-> 【浏览】-> 搜索 googletest, 找到Microsoft.googletest.v140.windesktop.msvcstl.static.rt-dyn ,版本号为:1.8.1.7,同时在项目所在路径多出一个packages文件夹: 里面有库的头文件和相关lib库 使用googletest 安装Microsoft.googletest.v140.
cmake目录 cd /usr/local/cmake 6)查看cmake版本 cmake –version 2 建立google Test 1)到https://github.com/google/googletest 获取最新版本的googletest wget https://github.com/google/googletest/archive/refs/heads/main.zip 2)解压 unzip main.zip 3)进入googletest目录 cd /home/jerry/googletest-main/ 4)在CMakeLists.txt 中加入内容 gedit CMakeLists.txt 加入 set -name "*.a" 7)安装gmock和gtest到系统: sudo make install ls -l /usr/local/lib 7)执行自带测试文件 cd googletest/samples
来源:http://www.uml.org.cn 1、下载googletest代码 https://github.com/google/googletest 得到压缩包: 解压并进入msvc文件夹:googletest-master \googletest\msvc 2、打开gtest.sln文件 因为我的VS是2017版,下载的gtest对应的是2010版,所以打开会提示选择目标SDK版本和升级平台工具集,点确定即可。 此时在\googletest-master\googletest\msvc\2010\gtest\Win32-Debug文件夹会产生两个.lib文件: 在\googletest-master\googletest
windows进行简单的linux开发 vscode 代码编辑器,配合插件进行代码编写 WSL需要安装以下软件: cmake:工程的编译框架构建基于cmake gcc:linux上编译器 g++:提供googletest 单元测试支持 googletest:提供工程的单元测试框架 gcovr:提供单元测试覆盖率统计 git:代码版本控制 doxygen:提供代码注释格式化和注释可视化支持 graphviz:配合doxygen Store中下载Ubuntu 软件安装 apt-get update # 安装所需软件 apt-get install git cmake gcc g++ doxygen graphviz # 安装googletest apt-get install googletest gcovr cd /usr/src/googletest mkdir -p build cd build cmake .. && make && 开发须知 物联网设备端主要使用C语言进行开发,为了提高工程质量,需要按照统一的规范进行开发,需要仔细阅读: SDK代码规范说明 SDK代码格式说明 同时,需要按照Doxygen规范进行注释,并且基于googletest
GoogleTest、Catch2和doctest,这三款当今最主流的选择,各有其鲜明的武功路数。本文将为你揭开它们的核心秘籍与实战优劣势,助你一招制胜。 (v3)0.85x0.92x0.88x0.75xdoctest0.35x0.78x0.65x0.45x//真实世界项目影响示例(10万行代码库)-GoogleTest:完整测试构建≈15分钟,二进制≈8MB-doctest :完整测试构建≈5分钟,二进制≈3.5MB-Catch2(v3):完整测试构建≈12分钟,二进制≈6MB二、技术特性深度对比2.1断言系统设计哲学GoogleTest的丰富断言体系展开代码语言:C++AI (testsGTest::gtest_mainGTest::gmock#如果需要Mocking)#自动发现测试include(GoogleTest)gtest_discover_tests(tests) 日常开发:使用doctest快速验证算法正确性CI/CD流水线:使用GoogleTest进行完整验证配置要点:1.保持测试接口兼容两个框架2.doctest用于快速原型迭代3.GoogleTest用于发布前的全面验证工具链
-3-Clause GoogleTest 是谷歌的 C++ 测试框架,它合并了之前独立存在的 GoogleTest 和 GoogleMock 项目。 测试自动发现:Googletest 可以自动发现和运行您的测试用例,无需手动注册。 丰富的断言集合:提供多种断言方式 (如相等、不相等、异常等),简化代码验证过程。 值参数化 (test):Googletest 支持值参数化 test,它会使用不同输入值来重复运行这个 test 函数。这在需要针对一组数据做大量类似操作时很有帮助。 类型参数化 (test):Googletest 还支持类型参数话化 tests (即模板),在编写只要求接口满足某些条件而实际类型又没有太大关系时很有帮助。 此外,GoogleTest 还提供了多种运行测试的选项,包括按照特定顺序、并行等方式进行。该项目支持各种编译器和平台,并被广泛应用于谷歌内部以及一些知名开源项目中。
基于流行的 xUnit 架构编译1、源码源码下载比较简单:git clone https://github.com/google/googletest.git源码分为四块文件夹说明ci这是Google googletest这是Google Test的核心代码所在的文件夹。它包含了Google Test框架的实现,包括测试框架的主要功能和断言宏等。 gtest_build_samples为例,如下勾选,ctrl+S保存,即可发现左边方案选项卡新增sample的编译右键sample1进行生成在${projectDir}\out\build\x86-Debug\googletest #ifndef GOOGLETEST_SAMPLES_SAMPLE1_H_#define GOOGLETEST_SAMPLES_SAMPLE1_H_// Returns n! _H_编译通过,运行即可生成PDB另:直接Cmake进行安装,是没有pdb生成,如若需要,则需要去源码下找到生成sln文件打开D:\Code\googletest\build\googletest-distribution.sln
mkdir Win/googletest/Include mkdir Win/googletest/Lib mkdir Win/googletest Win/googletest/Lib/Debug cp googletest/build/lib/Debug/gtest_maind.lib Win/googletest/Lib/ Win/googletest/Lib/Debug cp googletest/build/lib/Debug/gtest_maind.pdb Win/googletest/Lib/ Win/googletest/Lib/Release cp googletest/build/lib/Release/gtest_main.lib Win/googletest/Lib cp -r googletest/googletest/include/gtest Win/googletest/Include/gtest cp -r googletest/googlemock
使用TEST CASE TEST() and TEST_F() implicitly register their tests with googletest. TEST()和TEST_F() 用GoogleTest隐式注册它们的测试。因此,与许多其他C++测试框架不同,您不必重新列出所有定义的测试以便运行它们。 flags 保存所有GoogleTest标志的状态 Creates a test fixture object for the first test. Restores the state of all googletest flags 恢复所有GoogleTest标志的状态 Repeats the above steps for the next /external/googletest/googletest/include LOCAL_STATIC_LIBRARIES += libgtest libgtest_main LOCAL_CLANG_CFLAGS
但在执行autogen.sh时出错了,因为google.com被墙了,我的虚拟机里无法下载gtest,于是手动下载googletest-release-1.5.0.zip,解压缩后,改名为gtest放在 #如果目录不存在则尝试从google.com下载并解压缩,如果google被墙则下载失败 curl http://googletest.googlecode.com/files/gtest-1.5.0 .tar.bz2 | tar jx #将解压缩后的目录改名为gtest mv gtest-1.5.0 gtest fi googletest1.5.0下载地址:https://github.com /google/googletest/tree/release-1.5.0 #解压缩 unzip gtest-1.5.0.zip mv gtest-1.5.0 gtest 执行protobuf编译
6 C++与Jenkins和SonarQube 6.1单元测试Googletest及在Jenkins中的应用 GoogleTest 是 Google 开发的一个跨平台的 C++ 测试框架,用于编写和运行单元测试 cd googletest mkdir build && cd build cmake .. && make && sudo make install 6.1.3. 与其他工具对比 工具 优点 缺点 GoogleTest 功能全面、社区活跃、文档完善 需要额外学习成本 Catch2 单头文件、简单易用 功能相对有限 Boost.Test 与Boost生态集成 编译时间长 /googletest/myworkspace/process/nomal/ \ &&g++ ../.. /googletest/myworkspace/process/nomal/ \ &&g++ ../..
在编译antlr4时还要再下载googletest依赖包,这个下载地址也是要科学上网的,在内网环境中会失败,因此我antlr4源码包微调了下,把googletest依赖包也打进去了,也可以通过微调代码略过该步骤 && make -j16 && make -j16 install 如果你的网络环境无法直接从github上下载二进制包,则先自行下载二进制包 https://github.com/google/googletest e2239ee6043f73722e7aa812a459f54a28552929.zip,并放到antlr4代码包中相应位置,再修改antlr4代码,略过下载步骤,详见下面的做法: $ cd /opt/antlr4-4.10/runtime/Cpp/ # 新建目录,并将下载的googletest 压缩包放在该目录下 $ mkdir -p bld/_deps/googletest-subbuild/googletest-populate-prefix/src/ $ mv PATH/e2239ee6043f73722e7aa812a459f54a28552929 .zip bld/_deps/googletest-subbuild/googletest-populate-prefix/src/ # 修改下面文件,注释掉第一行 $ vim runtime/CMakeLists.txt
gmock一开始是独立维护的,后面被集成进了gtest(GoogleTest),成为gtest的一个子模块,安装了gtest后就可以开始使用gmock。 五,如何获取gmock 获取gmock,需要下载并编译GoogleTest开源库的源代码: git clone https://github.com/google/googletest cd googletest Category 5")); EXPECT_EQ(MyProductionFunction(&foo), "good"); } 九,参考阅读: https://google.github.io/googletest / https://google.github.io/googletest/gmock_for_dummies.html https://google.github.io/googletest/gmock_cheat_sheet.html