模拟器Emulator跑gtest单体测试,Linux平台代码覆盖率测试

it2022-05-05  136

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


最新回复(0)