C/C++生成单元测试覆盖率

生成单元测试覆盖率

前文提到添加了编译参数 -fprofile-arcs-ftest-coverage 已经生成了gcno文件,单元测试运行后也产生了gcda文件。并且我们已经安装好lcov,那么该如何使用lcov来生成覆盖率报告呢?

  1. 进入到我们生成了*.gcno *.gcda文件的目录
    image.png

  2. 收集覆盖率数据(*.gcda)并写入文件

lcov -d . -c -o all.info --rc lcov_branch_coverage=1

Capturing coverage data from .
Found gcov version: 4.8.5
Scanning . for .gcda files …
Found 8 data files in .
Processing com.gcda
Processing device.gcda
Processing main.gcda
Processing model.gcda
Processing network.gcda
Processing test_model.gcda
Processing test_normal.gcda
Processing usb.gcda
Finished .info-file creation

此时会在当前目录下生成一个all.info的文件,由上面命令执行过程输出的信息得知,其搜集了当前目录下所有gcda文件的覆盖率数据。

-d : 等同于 --directory,指定目录, 指定的目录跟进-d之后,用空格隔开。 这里使用了 . ,意味着当前目录
-c : 等同于 --capture,收集覆盖率数据
-o : 等同于 --output-file,表示输出到文件,文件名紧随其后,用空格隔开。这里使用了 all.info,表示收集到的数据输入到 all.info 文件
–rc lcov_branch_coverage=1 : 开启分支覆盖率统计。lcov1.10版本起,默认关闭分支覆盖率。可通过该参数开启

  1. 生成覆盖率报告
genhtml --branch-coverage -o result --rc lcov_branch_coverage=1 all.info  // 从all.info文件中生成包含分支覆盖率的报告到result目录

Reading data file all.info
Found 74 entries.
Found common filename prefix “/mnt/hgfs/linuxShareFile/testDemo/utdemo”
Writing .css and .png files.
Generating output.
Processing file demo/model/model.cpp
Processing file demo/model/model.h
Processing file demo/model/device/device.cpp
Processing file demo/model/device/hardware/hardware.h
Processing file demo/model/device/hardware/com/com.cpp
Processing file demo/model/device/hardware/usb/usb.cpp
Processing file demo/model/network/network.cpp
Processing file demo/model/network/network.h
Processing file utdemo/qt/utdemo/utdemo/main.cpp
Processing file utdemo/src/gtest/cppfreemock/runtime_patch.h
Processing file utdemo/src/gtest/cppfreemock/cpp11/basic_type.h
Processing file utdemo/src/gtest/cppfreemock/cpp11/impl.h
Processing file utdemo/src/gtest/cppfreemock/posix/runtime_patch_impl.h
Processing file utdemo/src/gtest/cppfreemock/x86/runtime_patch_impl.h
Processing file utdemo/src/gtest/gmock/head/gmock/gmock-generated-function-mockers.h
Processing file utdemo/src/gtest/gmock/head/gmock/gmock-actions.h
Processing file utdemo/src/gtest/gmock/head/gmock/gmock-more-actions.h
Processing file utdemo/src/gtest/gmock/head/gmock/gmock-spec-builders.h
Processing file utdemo/src/gtest/gmock/head/gmock/gmock-generated-actions.h
Processing file utdemo/src/gtest/gmock/head/gmock/gmock-matchers.h
Processing file utdemo/src/gtest/gmock/head/gmock/gmock-cardinalities.h
Processing file utdemo/src/gtest/gmock/head/gmock/internal/gmock-internal-utils.h
Process

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值