一、CTS添加新测试用例:

前言:

google源代码中的cts测试用例集目录为:source_android4.2/cts/tests/tests/ (source_android4.2表示android4.2代码存放路径),该目录下有一个测试用例集example文件夹;下面就以这个用例集为例,讲述怎样编写自己的cts测试用例集;

结构如下:

example

├── AndroidManifest.xml

├── Android.mk

└── src

└── android

└── example

├── cts

步骤:

1、    在cts/tests/tests/目录下创建一个自己的用例集(文件夹)名称XXX;

2、    在该文件夹中构建如下结构:

XXX

├── AndroidManifest.xml(可以拷贝example下该文件)

├── Android.mk(可以拷贝example下该文件)

└── src

└── android

└──XXX

└── cts

3、    编写测试代码

前提:

判断测试的接口或类是属于修改了原生代码中的哪个包下面的类(可以参考google文档:http://developer.android.com/intl/zh-CN/reference/packages.html);

然后在source_android4.2/cts/tests/tests/目录下找到对应的测试包,参考其代码的编写;

具体操作:

在src/android/XXX/cts目录下添加自己的用例;(XXX为自己的测试用例集的名称,例如:yunos)

细节说明:

1、google官方cts测试用例中,对一个类进行测试时,并没有对该类的所有方法进行测试,而是测试了该类中使用最频繁的一些方法;所以我们自己编程测试用例时,也可以按照这样的原则进行操作;

2、对于“窗口控件类”中使用的的res资源文件的目录在source_android4\cts\tests\res

3、最好是在eclipse中编写,需要res文件的,可以先拷贝到当前工程下,这样可以通过eclipse检查编程中的语法错误;

4、包名的格式:package android.XXX.cts;

4、    修改XXX/目录下的Android.mk文件

LOCAL_PACKAGE_NAME := CtsXXXTestCases(这个变量是定义自己的测试用例集的名称;编译后会生成同名的APK文件)

LOCAL_INSTRUMENTATION_FOR := CtsTestStubs(这个变量定位的是一些涉及到虚拟机的测试用例,使用junit框架;TestStubs这个类在目录cts\tools\vm-tests-tf\src\dot\junit\opcodes下)

5、修改XXX/目录下的AndroidManifest.xml文件

<manifest xmlns:android="http://schemas.android.com/apk/res/android"

package="com.android.cts.XXX">

<uses-permission android:name="android.permission.DISABLE_KEYGUARD" />

<application>

<uses-library android:name="android.test.runner" />

<activity android:name=”android.XXX.cts.activity的名称”/>(说明:这个是测试activity时容易忽略的地方)

</application>

<instrumentation android:name="android.test.InstrumentationCtsTestRunner"

android:targetPackage="com.android.cts.stub"

android:label="CTS tests of android.XXX"/>

</manifest>

6、修改source_android4.2/cts目录下的CtsTestCaseList.mk;(重要

在该文件中给变量cts_test_packages追加自己测试用例集名称CtsXXXTestCases

说明:该文件在编译的时候会被build/core/tasks/cts.mk调用,生成最终的CTS包。

对CtsTestCaseList.mk文件说明:

CTS_COVERAGE_TEST_CASE_LIST(核心变量)

├── cts_support_packages(该变量包含的是测试依赖的一些用例,其对于代码目录为cts/hostsidetests)

├──CtsAccelerationTestStubs \

├──CtsDelegatingAccessibilityService \

├──CtsDeviceAdmin \

├──CtsMonkeyApp \

├──CtsMonkeyApp2 \

├──CtsSomeAccessibilityServices \

├──CtsTestStubs \

├──SignatureTest \

├──TestDeviceSetup \

├──$(cts_security_apps_list)

├── cts_test_packages(该变量对应的是cts/tests/tests/目录下的测试用例)

二、编译自己的cts

执行make  cts  -j4

三、在真机上进行测试

由于完整进行cts测试要很长时间,所以我们可以自己创建一个测试计划,步骤如下:

1、将cts包解压,在android-cts\repository\plans下创建一个名为XXX的xml文件;

2、这个xml文件格式为:

<?xml version="1.0" encoding="UTF-8"?>

<TestPlan version="1.0">

<Entry uri="android.XXX"/>

</TestPlan>

3、进行cts测试时执行run  cts  -- plan  XXX

CTS添加新测试用例步骤的更多相关文章

  1. Hadoop集群添加新节点步骤

    1.在新节点中进行操作系统配置,包括主机名.网络.防火墙和无密码登录等. 2.在所有节点/etc/host文件中添加新节点 3.把namenode的有关配置文件复制到该节点 4.修改master节点s ...

  2. Linux下向SVN服务器添加新文件步骤

    1.将文件checkout到本地目录 svn checkout path(path是服务器上的目录)   例如:svn checkout svn://192.168.1.1/pro/domain    ...

  3. SQL Server 分区表上建立ColumnStore Index 如何添加新分区方法与步骤

    在生产环境中会遇到这样的场景,一个表随着时间的推移,越来越大,这个时候我们开始动手为这个表建立分区来改进查询性能. 但是表过大上百个G的时候,在数据仓库中,为了改进查询性能,我们可以添加在分区表的基础 ...

  4. C# 往Datatable中添加新行的步骤

    以一个实例说明 //录入年份绑定 public void YearList(FineUIPro.DropDownList ddlYear) { //年份从15年到当前年//起止年份 ; int yea ...

  5. rac添加新节点的步骤与方法2

    上一篇文章,把节点删除了.这次新增加一个节点 .新增加的节点是host03.如下: #Public IP192.168.16.45 racdb1192.168.16.46 racdb2192.168. ...

  6. pytest文档38-allure.setp添加测试用例步骤

    前言 一般流程性的测试用例,写成自动化用例时,步骤较多写起来会比较长.在测试用例里面添加详细的步骤有助于更好的阅读,也方便报错后快速的定位到问题. 举个常见的测试场景用例:从登陆开始,到浏览商品添加购 ...

  7. ASP.NET MVC 5 - 给电影表和模型添加新字段

    在本节中,您将使用Entity Framework Code First来实现模型类上的操作.从而使得这些操作和变更,可以应用到数据库中. 默认情况下,就像您在之前的教程中所作的那样,使用 Entit ...

  8. Linux 使用fdisk添加新分区

    Linux系统由于数据累计增长.前期存储规划不合理等诸多因素,出现存储不够用的情况时,此时就需要扩展逻辑分区或添加新的逻辑分区.下面介绍一下通过使用fdsik添加新的逻辑分区. 首先使用df命令检查文 ...

  9. [转] 添加新的系统调用 _syscall0(int, mysyscall)

    实验目的阅读 Linux 内核源代码,通过添加一个简单的系统调用实验,进一步理解Linux操作系统处理系统调用的统一流程.通过用kernel module的方法来实现一个系统调用实验,进一步理解Lin ...

随机推荐

  1. Python学习8——魔法方法、特性和迭代器

    Python中很多名称比较古怪,开头和结尾都是两个下划线.这样的拼写表示名称有特殊意义,因此绝不要在程序中创建这样的名称.这样的名称中大部分都是魔法(方法)的名称.如果你的对象实现了这些方法,他们将在 ...

  2. C语言写郑州大学校友通讯录

    #include <stdio.h> #include <string.h> #include <stdlib.h> #define LEN sizeof(stru ...

  3. C#键盘事件

    一: protected override void OnKeyDown(KeyEventArgs e) { if (e.Key==Key.Enter) { sendAppToServer(); } ...

  4. 最全MySQL面试题和答案

    Mysql 的存储引擎,myisam和innodb的区别. 答: 1.MyISAM 是非事务的存储引擎,适合用于频繁查询的应用.表锁,不会出现死锁,适合小数据,小并发. 2.innodb是支持事务的存 ...

  5. 12 Mysql之工作中常用操作

    Mysql 专题讲解 一.用户创建与权限管理 a)  创建和删除用户 创建用户: CREATE USER jack@localhost; UPDATE USER SET password=passwo ...

  6. Python中GUI库PyQt5的安装和配置

    在使用Tkinter开发GUI程序时,发现相关文档比较少,开发起来太累.经过综合比较,决定使用PyQt这个库.下面是简单的安装步骤. 1.安装 PyQt5 : pip install PyQt5 -i ...

  7. vue下载后台传过来的乱码流的解决办法

    后台返回的乱码流 解决办法: 请求方式用的是axios,主要加关键的 {responseType: 'blob'} axios封装 export function postDownload(url, ...

  8. hdfs存储与数据同步

    两个hadoop集群之间同步数据 实例为dws的 store_wt_d表 一 文件拷贝 hadoop distcp -update -skipcrccheck hdfs://10.8.31.14:80 ...

  9. 从零开始实现asp.net MVC4框架网站的用户登录以及权限验证模块 详细教程

    从零开始实现asp.net MVC4框架网站的用户登录以及权限验证模块 详细教程   用户登录与权限验证是网站不可缺少的一部分功能,asp.net MVC4框架内置了用于实现该功能的类库,只需要简单搭 ...

  10. Django单元测试 相关知识

    前言 本文,旨在说明python Django如何编写单元测试,从“背景”,“测试要求”,“代码编写”,“如何运行”,“检验测试覆盖度” 这几个方面来说明附上django的官方文档单元测试章节=> ...