【gtest】基于Android源码实例

gtest是一个跨平台的C++单元测试框架。

Android下使用gtest单元测试。

1编译

  • cd LINUX/android
  • source build/envsetup.sh
  • lunch
  • make
  • ps:/LINUX/android/external/googletest(确保这个模块能编译)

2创建测试目录gtestdemo,目录结构为:

## [Android.mk] 结构如下:
#####################################
LOCAL_PATH := $(call my-dir)

PRJ_INC_PATH += $(LOCAL_PATH)/xxx         // 1这是源代码头文件目录,当前目录为创建的test目录

include $(CLEAR_VARS)
LOCAL_MODULE := xxxtest                   // 2自定义的可执行程序文件名
LOCAL_SRC_FILES := test/test_case.cpp
LOCAL_SRC_FILES += cpp/mtest.cpp
LOCAL_C_INCLUDES := $(LOCAL_PATH)/xxx     // 3同注释1

LOCAL_STATIC_LIBRARIES := libgtest        // *必写项
LOCAL_CFLAGS := --coverage                // *必写项
LOCAL_LDFLAGS := --coverage               // *必写项

include $(BUILD_EXECUTABLE)
	   

   
## [Application.mk] 结构如下:
#####################################
APP_STL :=  c++_static
APP_OPTIM := debug



## [mtest.h] 结构如下:
#####################################
#ifndef MYGTESTAPPLICATION_MTEST_H
#define MYGTESTAPPLICATION_MTEST_H

int myTest(int intValue);

#endif //MYGTESTAPPLICATION_MTEST_H



## [mtest.cpp] 结构如下:
#####################################
#include "mtest.h"

int myTest(int intValue)
{
    if (intValue > 255) {
        return 255;
    } else if (intValue < 100) {
        return 0;
    }

    return intValue;
}


## [test_case.cpp] 结构如下:
#####################################
#include <gtest/gtest.h>

#include "cpp/mtest.h"

TEST(MYTEST, 1)
{
    EXPECT_EQ(myTest(10), 0);
}

TEST(MYTEST, 2)
{
    EXPECT_EQ(myTest(150), 150);
}

TEST(MYTEST, 3)
{
    EXPECT_EQ(myTest(300), 255);
}

int main(int argc, char *argv[])
{
    testing::InitGoogleTest(&argc, argv);
    return RUN_ALL_TESTS();
}

3编译gtestdemo

  • mmm xxx/xxx/gtestdemo/

生成目录为

[100% 10/10] Install: out/target/product/yebisu/system/bin/xxxtest(对应于.mk的local_module)

#### build completed successfully (42 seconds) ####

4将生成的可执行文件 push 进车载机,执行命令如下

  • adb root
  • adb remount
  • adb push out/target/product/yebisu/system/bin/xxxtest /data (推进车机/data 目录下)
  • adb shell /data/xxxtest (执行test)
  • adb pull /out/target/product/yebisu/obj/EXECUTABLES/xxxtest_intermediates out/target/product/yebisu/obj/EXECUTABLES/xxxtest_intermediates (推出车机)
  • ps:如果不是首次执行需要在adb shell /data/xxxest 前执行 adb shell rm -rf /out/target/product/yebisu/obj/EXECUTABLES/xxxtest_intermediates

5生成*.info文件
   前提:{
         1)进入本地计算机的/usr/bin目录,新建 llvm-cov.sh 文件,
            sudo vi llvm-cov.sh 输入如下内容:
            #!/bin/bash
            exec xxx/LINUX/android/prebuilts/clang/host/linux-x86/clang-4691093/bin/llvm-cov gcov "$@"
            注:上面语句中的空格 不可以省略。给 llvm-cov.sh 文件执行权限(chmod +x llvm-cov.sh)。

         2)下载lcov源码。下载lcov:http://ltp.sourceforge.net/coverage/lcov.php,有rpm包和源码包。(以源码包为例)
            解压lcov-x.xx.tar.gz,进入源码包,执行vi bin/geninfo
            找到 [our $gcov_tool = "gcov";] 这一行,将双引号后面的内容替换为 "llvm-cov.sh" 保存退出。
            执行 sudo make install
        }//第一次的时候需要
   进入/home/your-mobis-code-dir/LINUX/android/out/target/product/yebisu/obj/EXECUTABLES/*可执行程序文件名称*_intermediates 目录
   执行生成*.info文件命令:
   sudo lcov -d . -t *name* -o *name.info* -b . -c
   例如:sudo lcov -d . -t myinfo -o myinfo.info -b . -c
    
6生成html文件
   执行命令 genhtml -o result  *.info。
   例如: genhtml -o result myinfo.info

7打开result文件夹中的index.html

可以得到我们的测试通过率。

 

最后分享一个gtest的详细使用链接:点我

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值