0


使用google的gtest来进写单元测试(UT),并进行行覆盖率统计

1.我们先来创建一个简单的功能函数。假设我们要创建一个函数,用来计算两个整数的和。在src目录中,创建一个文件add.cpp:

// add.cpp#include"add.h"intadd(int a,int b){return a + b;}

同时,我们也需要创建相应的头文件add.h:

// add.h#ifndefADD_H#defineADD_Hintadd(int a,int b);#endif
  1. 接下来,我们创建Google Test测试用例。在test目录中,创建一个文件test_add.cpp:
// test_add.cpp#include"gtest/gtest.h"#include"add.h"TEST(AddTest, PositiveNumbers){EXPECT_EQ(add(1,2),3);EXPECT_EQ(add(100,200),300);}TEST(AddTest, NegativeNumbers){EXPECT_EQ(add(-1,-2),-3);EXPECT_EQ(add(-100,-200),-300);}
  1. 然后,我们写一个CMakeLists.txt文件,用来编译我们的程序和测试:
#CMakeLists.txtcmake_minimum_required(VERSION 3.10)project(MyProject)#Enable testingenable_testing()#gtestinclude_directories(thirdparty/gtest_1.10.0/include)link_directories(thirdparty/gtest_1.10.0/lib)#Add the add functionadd_library(add src/add.cpp)target_include_directories(add PUBLIC src)#Add the testadd_executable(test_add test/test_add.cpp)target_link_libraries(test_add gtest_main add)#Add a testadd_test(NAME AddTest COMMAND test_add)#Enable code coverageset(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fprofile-arcs -ftest-coverage")target_link_libraries(add gcov)
  1. 最后,我们可以使用gcov(ubuntu中gcc自带)和lcov(安装命令:sudo apt-get install lcov )工具来计算代码覆盖率:
mkdir build
cd build
cmake ..
make
./test_add
lcov --capture --directory .--output-file coverage.info
lcov --list coverage.info

统计结果如下:

在这里插入图片描述

标签: 单元测试

本文转载自: https://blog.csdn.net/weixin_43357110/article/details/134053907
版权归原作者 垚垚垚57 所有, 如有侵权,请联系我们删除。

“使用google的gtest来进写单元测试(UT),并进行行覆盖率统计”的评论:

还没有评论