生成单元测试覆盖率
前文提到添加了编译参数 -fprofile-arcs
、 -ftest-coverage
已经生成了gcno
文件,单元测试运行后也产生了gcda
文件。并且我们已经安装好lcov
,那么该如何使用lcov
来生成覆盖率报告呢?
-
进入到我们生成了
*.gcno
*.gcda
文件的目录
-
收集覆盖率数据(
*.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 : 开启分支覆盖率统计。lcov
从1.10
版本起,默认关闭分支覆盖率。可通过该参数开启
- 生成覆盖率报告
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