第⼆章UT单元测试——GTest框架实例系列⽂章⽬录
⽂章⽬录
前⾔
第⼀章介绍了GTest通⽤构建说明,本⽂就按照说明中推荐的⽅法搭建⼀套GTest框架实例吧。
提⽰:以下是本篇⽂章正⽂内容,下⾯案例可供参考
⼀、环境配置
本⽂使⽤Linux环境。(后续补充)
⼆、使⽤步骤
1.添加待测源码
,或者导⼊已有代码。
example.cpp(⽰例):
蜂蜜英语
#include<stdio.h>
int main()
{
printf("Hello gtest\n");
}
2.修改cmake⽂件
cmake_minimum_required(VERSION 2.8.12)
project(googletest-download NONE)
include(ExternalProject)
ExternalProject_Add(googletest
GIT_REPOSITORY /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 ""
)
<:
cmake_minimum_required(VERSION 3.16)
集思广益近义词project(GoogleTestExpl)
# Download and unpack googletest at configure time
configure_in )
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
# ttings on Windows
t(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. Eg
add_executable(example example.cpp)
target_link_libraries(example gtest_main)
add_test(NAME example_test COMMAND example)
# batch compile samples
file(GLOB_RECURSE utfiles ${CMAKE_CURRENT_SOURCE_DIR} samples/*_unittest)
file(GLOB_RECURSE srcfiles ${CMAKE_CURRENT_SOURCE_DIR} samples/*[0-9])
list(LENGTH utfiles utfileslen)
message(STATUS "utfileslen=${utfileslen}")
list(LENGTH srcfiles srcfileslen)
message(STATUS "srcfileslen=${srcfileslen}")
# get all srcs
foreach(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 srcs
foreach(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.添加⾃动化脚本
tup.sh:
mkdir build
cd build
害你在心口难开cmake ..
make -j4
# test samples
../test_samples.sh
# test example
../test_example.sh
test_samples.sh:
# get this script path
curPath=$(dirname$(readlink -f "$0"))
echo""
cd$curPath/build
pwd
# execute sample programs
for file in`ls -dv sample[0-9]*`
do
echo"testing $"
./$file
done
test_example.sh:
# get this script path
curPath=$(dirname$(readlink -f "$0"))
echo""
cd$curPath/build
pwd
# execute sample programs
for file in`ls -dv example`
do
echo"testing $"
./$file
done
4.运⾏GTest实例
README.md:
A simple framework implementation of GoogleTest.
Linux command:
房屋平面图怎么画
1. chmod +x tup.sh test_samples.sh test_example.sh
2. ./tup
关于习惯的故事5.运⾏结果
测试结果待补充。
总结
以上就是今天要讲的内容,本⽂仅仅简单介绍了GTest框架的使⽤,⽽GTest框架提供了⼤量能使我们快速便捷地模拟和测试的⼯具和⽅法。