C++单体测试的整个过程

将自己要测试的代码编译之后添加到android模拟器中:

1.设置环境变量

  source build/envsetup.sh  

2.选择编译版本

  lunch

3.编译android源码

  make -j8

当android源码编译成功之后,我们就可以使用android模拟器了,即:下次不用编译android源码了

 

进入相关目录,设置环境变量,lunch,启动模拟器:

  emulator -selinux permissive [-logcat -s -show-kernel]

启动模拟器之后,需要重开一个终端,设置环境变量,lunch

  make test -j2

编译成功后就是将生成的可执行文件添加到模拟器中运行,具体步骤如下:

  adb root

  adb remount

  adb push test /data

添加成功后,通过

  adb shell

进入模拟器,输入编译好的可执行文件test,即可得到执行后的测试结果

打印日志:logcat -s 定义的日志的宏&  #&表示让log在后台跑(运行程序的时候,log可以显示出来)

看完日志后,可以killall log名字来关闭该日志进程

将如下内容添加到源码的Android.mk文件中:

utcoverage := yes
ifeq ($(utcoverage), yes)
LOCAL_STATIC_LIBRARIES += libgcov libprofile_rt
LOCAL_CFLAGS += -g3 -o0 -fprofile-arcs -ftest-coverage -Xclang -coverage-cfg-checksum -Xclang -coverage-no-function-names-in-data -Xclang -coverage-version='504*'
LOCAL_CLIKER := -fprofile-arcs -ftest-coverage
endif

然后进行代码的全编(生成.gcno文件)

cd到模拟器的data目录,运行bin文件(生成.gcda文件),adb pull gcda文件,把源文件,.gcno文件,.gcda文件放到同一个目录。(adb push和adb pull命令针对的是模拟器)

从模拟器拉文件的时候,需要先将文件拷贝到data目录下,并且从模拟器中拉取文件时,需要一个一个的拉,因为模拟器中不认识通配符*

find -name "名字"

在所有文件的目录下:

lcov -c -d ./ -o app.info  #-c,代表生成覆盖率数据,后面不用给参数;-d表示.gcda所在的目录;-o表示指定生成覆盖率文件的名字

genhtml app.info -o 文件名  #根据信息文件(.info)产生html文档,并输出到一个文件夹中;-o,指定输出的文件夹

如果要查看分支覆盖率情况,需要在配置文件/etc/lcovrc中修改lcov_branch_coverage = 1。

posted @ 2018-07-12 18:00  c&z  阅读(1225)  评论(0编辑  收藏  举报