PC机是Linux系统,利用gtest进行UT测试生成覆盖率报告(HTML格式)。
本文主要是利用adb来实现模拟器,具体步骤如下:
一、安装lcov(LCOV介绍:https://blog.csdn.net/livelylittlefish/article/details/6321887)
// 安装lcov-1.13(下载网址:https://fossies.org/linux/privat/lcov-1.13.tar.gz/)
二、编写单体测试代码(自行百度)
1、gtest Code路径
在要测试的文件夹内创建一个gtest文件夹,在此文件夹内编写个gtestCode
2、gtest Android.mk编写
3、在测试代码头文件中包含一下头文件
4、源文件参考:
http://mzhx-com.iteye.com/blog/1673469
https://blog.csdn.net/zm_21/article/details/37820257
三、编译mk文件(自行百度)
说明:对使用gtest手段测试代码(Lib库)的执行覆盖率,须在对应mk文件中添加以下选项:
选项:fprofile-arcs –ftest-coverage
目的:要使lcov生效,需要在编译选项中新增–fprofile-arcs –ftest-coverage,编译完成才能生成覆盖率相关的*.gcda文件
四、运行
1.make gtest Code,生成gcno文件
打开终端(用于编译)
cd 到项目所在的根目录 (morley_9)
source build/envsetup.sh
lunch 对应的选项,模拟器的编号
make gtstXXXX -j8(gtstXXXX根据实际情况改,生成文件gtstXXXX,同时生成gcno文件,gcno路径:⇒ /out/target/product/generic_x86_64/obj/SHARED_LIBRARIES/libvehicleddiag_intermediates)
make libXXX -j8 (libXXX根据实际情况改,生成.so文件)
2.
编译全程序 (morley9_UT)
打开模拟器
emulator -selinux permissive -logcat -s -show-kernel
3.
另开一个窗口(用于adb shell) morley9_UT
adb shell
cd data
mkdir bin
mkdir lib
ls
4.
再开一个窗口(用于adb push) morley_9
adb root
adb devices
把编译好的库推到 /data/lib/
adb push out/target/product/generic_x86_64/vendor/lib64/libiap2proxy.so /data/lib
编译好的bin 推到 /data/bin/
adb push out/target/product/generic_x86_64/system/bin/gtstiap2proxy /data/bin
5.切到 adb shell的窗口:
export LD_LIBRARY_PATH=/data/lib:/lib:/system/lib64 (配置环境)
./gtstiap2proxy
生成的.gcda文件在/data/bin/out/target/product/generic_x86_64/obj/SHARED_LIBRARIES/libiap2proxy_intermediates/proxy
6.切回之前执行adb push 的窗口
cd 到 ~/proj/morley_9/out/target/product/generic_x86_64/obj/SHARED_LIBRARIES/libiap2proxy_intermediates/proxy 下
adb pull /data/bin/out/target/product/generic_x86_64/obj/SHARED_LIBRARIES/libiap2proxy_intermediates/proxy ./
mv /proj/morley_9/out/target/product/generic_x86_64/obj/SHARED_LIBRARIES/libiap2proxy_intermediates/proxy/proxy ./
lcov -c -d ./ -o index.info
genhtml index.info -o result
生成的单体测试报告文件:在out/target/product/generic_x86_64/obj/SHARED_LIBRARIES/result/index.html