编译脚本
set(GOOGLETEST_ROOT $ENV{ANDROID_NDK}/sources/third_party/googletest)
add_library(gtest STATIC ${GOOGLETEST_ROOT}/src/gtest_main.cc ${GOOGLETEST_ROOT}/src/gtest-all.cc)
target_include_directories(gtest PRIVATE ${GOOGLETEST_ROOT})
include_directories(gtest PUBLIC ${GOOGLETEST_ROOT}/include)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fprofile-arcs -ftest-coverage")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -pedantic -Wno-variadic-macros")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-error -DLOG_TAG=\"CV_ALGORITHM\"")
# 下面两个二者选其一,一个是可执行文件,一个是链接库
set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} --coverage")
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} --coverage")
include_directories(include)
aux_source_directory(. ALL_SRC_FILE)
add_executable(TestAlgorithm ${ALL_SRC_FILE})
target_link_libraries(TestAlgorithm
gtest)
编译环境
adb shell "export GCOV_PREFIX=/system/bin/personal;
执行环境
# 执行环境安装下面两款软件
sudo apt-get install llvm
sudo apt-get install clang
# 在/usr/bin下添加脚本llvm-gcov.sh, 内容如下
#!/bin/bash
exec llvm-cov gcov "$@"
# 编译环境下执行下面命令
chmod +x llvm-gcov.sh
生成覆盖率报表
# 将用例执行后生成的gcda文件adb pull回本地,放在与编译时生成的gcno文件放在同一目录下
# 项目build目录下执行下面命令
lcov --directory . --gcov-tool llvm-gcov.sh --capture --output-file test_result.info
genhtml test_result.info -o Report