# 在编译的时候增加 -fprofile-arcs -ftest-coverage
# 支持c和c++编译的覆盖率
# g++参考
# 生成.gcno文件
g++ *.cpp -c -fprofile-arcs -ftest-coverage
# 生成.gcda, --coverage/ -lgcov/ -fprofile-arcs 都可
g++ *.o -o test --coverage
./test
# 生成覆盖率文件 .info
lcov -d . -c -o test.info
# 排除目录 lcov -r test.info '/src/include/*' '/user/bin/*' -o new_test.info
# 固定目录 lcov -e test.info '*/src/*' '*/lib/*' -o new_test.info
# report
# 生成页面, 如有其他info文件,请改成其他的info文件
genhtml test.info -o result
# coverage option
OPTION (ENABLE_COVERAGE "Use gcov" OFF)
MESSAGE(STATUS ENABLE_COVERAGE=${ENABLE_COVERAGE})
IF(ENABLE_COVERAGE)
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fprofile-arcs -ftest-coverage")
SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fprofile-arcs -ftest-coverage")
# SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -fprofile-arcs -ftest-coverage")
ENDIF()
编译时使用命令如下: cmake -DENABLE_COVERAGE=ON ..
UT
FILE* file 传参时,可用stdout
mock找不到的函数用 extern "C" {}
./ut --gtest_filter=*lcov_fix --gtest_repeat=20