zoukankan      html  css  js  c++  java
  • 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。

  • 相关阅读:
    开发基于键值对形式的语言管理器LauguageManager
    基于Json(键值对)配置文件的配置管理器
    Unity换装效果
    技能冷却效果的制作
    c#中的反射
    委托和事件的区别
    字典
    有序列表
    链表

  • 原文地址:https://www.cnblogs.com/chen-cai/p/9300874.html
Copyright © 2011-2022 走看看