第二章 UT单元测试——GTest框架实例

系列文章目录

第一章 UT单元测试——GoogleTest通用构建说明
第二章 UT单元测试——GTest框架实例


文章目录

  • 系列文章目录
  • 前言
  • 一、环境配置
  • 二、使用步骤
    • 1.添加待测源码
    • 2.修改cmake文件
    • 3.添加自动化脚本
    • 4.运行GTest实例
    • 5.运行结果
  • 总结

前言

第一章介绍了GTest通用构建说明,本文就按照说明中推荐的方法搭建一套GTest框架实例吧。


提示:以下是本篇文章正文内容,下面案例可供参考

一、环境配置

本文使用Linux环境。(后续补充)

二、使用步骤

1.添加待测源码

下载官方示例代码,或者导入已有代码。

example.cpp(示例):

#include <stdio.h>int main(){  printf("Hello gtest\n");}

2.修改cmake文件

CMakelists.txt.in:

cmake_minimum_required(VERSION 2.8.12)project(googletest-download NONE)include(ExternalProject)ExternalProject_Add(googletest  GIT_REPOSITORY    https://github.com/google/googletest.git  GIT_TAG           master  SOURCE_DIR        "${CMAKE_CURRENT_BINARY_DIR}/googletest-src"  BINARY_DIR        "${CMAKE_CURRENT_BINARY_DIR}/googletest-build"  CONFIGURE_COMMAND ""  BUILD_COMMAND     ""  INSTALL_COMMAND   ""  TEST_COMMAND      "")

CMakelists.txt:

cmake_minimum_required(VERSION 3.16)project(GoogleTestExpl)# Download and unpack googletest at configure timeconfigure_file(CMakeLists.txt.in googletest-download/CMakeLists.txt)execute_process(COMMAND ${CMAKE_COMMAND} -G "${CMAKE_GENERATOR}" .  RESULT_VARIABLE result  WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/googletest-download )if(result)  message(FATAL_ERROR "CMake step for googletest failed: ${result}")endif()execute_process(COMMAND ${CMAKE_COMMAND} --build .  RESULT_VARIABLE result  WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/googletest-download )if(result)  message(FATAL_ERROR "Build step for googletest failed: ${result}")endif()# Prevent overriding the parent project's compiler/linker# settings on Windowsset(gtest_force_shared_crt ON CACHE BOOL "" FORCE)# Add googletest directly to our build. This defines# the gtest and gtest_main targets.add_subdirectory(${CMAKE_CURRENT_BINARY_DIR}/googletest-src                 ${CMAKE_CURRENT_BINARY_DIR}/googletest-build                 EXCLUDE_FROM_ALL)# Now simply link against gtest or gtest_main as needed. Egadd_executable(example example.cpp)target_link_libraries(example gtest_main)add_test(NAME example_test COMMAND example)# batch compile samplesfile(GLOB_RECURSE utfiles ${CMAKE_CURRENT_SOURCE_DIR} samples/*_unittest.cc)file(GLOB_RECURSE srcfiles ${CMAKE_CURRENT_SOURCE_DIR} samples/*[0-9].cc)list(LENGTH utfiles utfileslen)message(STATUS "utfileslen=${utfileslen}")list(LENGTH srcfiles srcfileslen)message(STATUS "srcfileslen=${srcfileslen}")# get all srcsforeach(srcfile IN LISTS srcfiles)  file(RELATIVE_PATH srcfilename ${CMAKE_CURRENT_SOURCE_DIR}/samples ${srcfile})  list(APPEND srcfilenames ${srcfilename})endforeach(srcfile IN LISTS srcfiles)message(STATUS "srcfilenames=${srcfilenames}")# compile utfile with srcsforeach(utfile IN LISTS utfiles)  file(RELATIVE_PATH utfilename ${CMAKE_CURRENT_SOURCE_DIR}/samples ${utfile})  list(FIND utfiles ${utfile} i)  # get filename without extension  get_filename_component(targetname ${utfile} NAME_WE)  add_executable(${targetname} ${utfile} ${srcfiles})  target_link_libraries (${targetname} gtest_main)  add_test(NAME ${targetname}_test COMMAND ${targetname})  message(STATUS "Recipe ${i}: test=${targetname}_test, target=${targetname}, ut=${utfilename}, src=${srcfilenames}, link=gtest_main")endforeach(utfile IN LISTS utfiles)

3.添加自动化脚本

setup.sh:

mkdir buildcd buildcmake ..make -j4# test samples../test_samples.sh# test example../test_example.sh

test_samples.sh:

# get this script pathcurPath=$(dirname $(readlink -f "$0"))echo "entering build..."cd $curPath/buildpwd# execute sample programsfor file in `ls -dv sample[0-9]*`doecho "testing $file..."./$filedone

test_example.sh:

# get this script pathcurPath=$(dirname $(readlink -f "$0"))echo "entering build..."cd $curPath/buildpwd# execute sample programsfor file in `ls -dv example`doecho "testing $file..."./$filedone

4.运行GTest实例

README.md:

A simple framework implementation of GoogleTest.Linux command:1. chmod  x setup.sh test_samples.sh test_example.sh2. ./setup

5.运行结果

测试结果待补充。


总结

以上就是今天要讲的内容,本文仅仅简单介绍了GTest框架的使用,而GTest框架提供了大量能使我们快速便捷地模拟和测试的工具和方法。

来源:https://www.icode9.com/content-4-896251.html

(0)

相关推荐

  • windows下编译pcl-master源码(带GPU)

    参考博客 1.http://pointclouds.org/documentation/tutorials/compiling_pcl_windows.php#compiling-pcl-window ...

  • 简单易懂的单元测试框架-gtest(一)

    简介 gtest是google开源的一个单元测试框架,以其简单易学的特点被广泛使用.该框架以第三方库的方式插入被测代码中.同其他单元测试框架相似,gtest也通过制作测试样例来进行代码测试.同时,gt ...

  • 简单易懂的单元测试框架-gtest(二)

    简介 事件机制用于在案例运行前后添加一些操作(相当于挂钩函数).目前,gtest提供了三种等级的事件,分别: 全局级,所有案例执行的前后 TestSuite级,某一个案例集的前后 TestCase级, ...

  • 《始计》篇第二章——五事七计知胜负

    <始计>篇第二章--五事七计知胜负 从广义动量定理Fαt=MV的角度来说,优势力量是胜利的动力,劣势力量是胜利的阻力(敌人的优势就是你的劣势),二者的合外力决定胜利这个成果,合外力决定成果 ...

  • 2.4 第二章 第四节 葡萄褐斑病

    2.4 第二章 第四节 葡萄褐斑病

  • 渔家小鸥号-第二章

    剩下的几个人平时本来就话语不多,特别是这种情况,更加沉默了. 老刀疤子把目光朝着煮饭婆扫了一眼. 煮饭婆摇摇头,就更加没有主见了.她不过是跟着大伙儿讨个生而已.平时就是任劳任怨多点,纯粹当自己是多余的 ...

  • 等你,在枫树林-第二章

    "人家娃儿刚来,怕生,你得多照顾点."艾司长叮嘱道:"懂吗?" "爹,照顾他?嗯,也可以吧."艾小虹闪着狡黠的眼神看着自家爹爹问道:&quo ...

  • 地藏王-第二章

    第二章: 潜行归来  为母复仇 不知山河繁星,不知山川几何,脚下的牛皮战靴已经磨破,但是,身穿红色铠甲之人只顾朝着自己心中的圣地前往,日夜兼程,不曾有过一丝的懈怠,渴了就喝山涧的溪泉,饿了就觅林中的鸟 ...

  • 帝国宗门-第二章

    第二章 主祭师祷告祭祀完毕.就由宗族族长进行接手后续的仪式流程. 只见那比克族长约摸7旬年纪,长须鹤发,手执和主祭师同样是鹿首木质拐杖,只是此鹿首带有较为凶狠的霸气,没有一点的伶俐之感.倒是魁梧的身躯 ...

  • 战道巅峰-第二章

    回顾那件反叛事情的始末:那晚凌晨三时三刻钟,在席梦思大床上,赤膊上身.在人睡得最为深沉的时候,一阵急促的脚步声从外面传来,席梦思上的那人根据多年的直觉,预感到将有紧急任务将要出征.随即迅速的穿起衣服, ...

  • 【寸寸劫灰】第二章 青鸟不传日色斜·养虎

    青鸟不传日色斜 不远处一声轻咳,剑灵登时交头接耳. 施芷蕾到了! 这个在剑灵之中,传闻最多,最为神秘的少女,轻易不露面.剑灵作为星瀚之后,属于相当有优越感的一个少年群体,但这些优越的子弟们加起来,似乎 ...

  • V.2《中亚塔吉克史》第二章(20210509)

    2021年5月1日,(杜尚别,夏冉整理校对)按照之前的计划,在五一劳动节开始第一更,每周更新一个章节,预计19周全部更新完.对于19章之后的内容,翻译工作也在持续之中. 关于全书的目录,请参阅V.0. ...