jenkins集成gtest单元测试报告和gcov覆盖率测试报告

jenkins集成gtest单元测试报告和gcov覆盖率测试报告

参考资料:

gtest 单元测试结果可视化

【C++】统计代码覆盖率(二)

【C++】统计代码覆盖率(三)

环境准备

  • jenkins(略)

jenkins 上插件:

插件名称作用
JUnit Plugin集成 gtest 单元测试报告
HTML Publisher plugin集成 gcov 覆盖率测试报告
  • googletest、lcov:sudo apt install lcov

单元测试报告生成

.\<test_proc> --gtest_output=xml:<report_file_path>

生成测试报告需要处理适配 JUnit 的 Package​。给元素测试报告中 testcase​ 元素的 classname​ 属性值增加 模块名​,JUnit 将 模块名​ 解析为 Package​ 使得 Jenkins 中单元测试报告可以按模块统计查看。

<!--原始报告-->
<testcase name="PrintsMessage" file="/home/user/Documents/googletest/googletest/samples/sample9_unittest.cc" line="82" status="run" result="completed" time="0." timestamp="2024-04-02T09:09:44.484" classname="CustomOutputTest" />

<!--增加模块名-->
<testcase name="PrintsMessage" file="/home/user/Documents/googletest/googletest/samples/sample9_unittest.cc" line="82" status="run" result="completed" time="0." timestamp="2024-04-02T09:09:44.484" classname="模块名.CustomOutputTest" />

覆盖率测试报告生成

生成覆盖率测试报告的测试用例,需要增加如下编译配置

# gcov相关编译选项
SET(GCC_COVERAGE_COMPILE_FLAGS "-g -O0 -coverage -fprofile-arcs -ftest-coverage")
SET(GCC_COVERAGE_LINK_FLAGS "-coverage -lgcov")
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${GCC_COVERAGE_COMPILE_FLAGS}")
SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${GCC_COVERAGE_LINK_FLAGS}")

#链接库文件gcov
target_link_libraries(test_proj_name gcov)

编译测试用例

在编译生成目录得到*.gcno文件

执行测试用例

在编译生成目录得到*.gcda文件

生成报告

//在编译生成目录中执行得到test.info
lcov -c -o test.info -d .

//根据test.info生成html网页报告到<output_dir>文件夹
genhtml test.info -o <output_dir>

Jenkins 流水线集成

//增加构建后步骤
post {  
        always {
            junit 'module1.xml' // 归档 gtest 的 XML 报告  
            junit 'module2.xml' // 归档 gtest 的 XML 报告
            script {
                // 发布HTML报告
                publishHTML (
                    target: [
                        allowMissing: false,
                        alwaysLinkToLastBuild: false,
                        keepAll: true,
                        reportDir: './gcov_report',//将各模块的覆盖率测试html报告文件夹放到gcov_report目录
                        reportFiles: '*/index.html',//匹配所有模块的覆盖率测试报告
                        reportName: 'LCOV Report'
                    ]
                )
            }
        }  
    }

效果

Jenkins 构建结果概览
在这里插入图片描述
一次构建单元测试报告
在这里插入图片描述
一次构建覆盖率测试报告
在这里插入图片描述

  • 5
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值