一、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. 手把手教你搭建FastDFS集群(上)

    手把手教你搭建FastDFS集群(上) 本文链接:https://blog.csdn.net/u012453843/article/details/68957209        FastDFS是一个 ...

  2. mysql 批量 insert 数据丢失问题

    这两天发现mysql 批量insert 比如600条数据后,页面马上select就查询到580条,但是等几秒钟再查询就有600条(也有部分情况是永久只能查到580条了) 查看mybatis的日志发现循 ...

  3. 通俗易懂的axios

    get的两种请求: methods:{ //axios.get的发送参数有两种,两个ajax请求函数都可实现 sendGetByStr(){ //1.get通过直接发字符串拼接 axios.get(` ...

  4. Java高并发程序设计学习笔记(四):无锁

    转自:https://blog.csdn.net/dataiyangu/article/details/86440836#1__3 1. 无锁类的原理详解简介:1.1. CAS1.2. CPU指令2. ...

  5. hadoop 中ALL Applications 中Tracking 下History查找不到MapReduce Job 日志

    运行一个Map Reduce job 想查看日志: 点击History ,找不到网页 解决办法如下: 1.其中有一个进程是需要启动的: Hadoop自带了一个历史服务器,可以通过历史服务器查看已经运行 ...

  6. Apache Shiro漏洞复现

    利用burp dns进行检测,脚本如下: import sys import uuid import base64 import subprocess from Crypto.Cipher impor ...

  7. 解决办法:Message: 对实体 "useUnicode" 的引用必须以 ';' 分隔符结尾

    Hibernate 5.3.1 INFO: HHH000206: hibernate.properties not foundException in thread "main" ...

  8. 《Linux就该这么学》day3

    ps:原谅我的书法出自鲁迅的<野草> <Linux就该这么学>书本介绍: 本书是由全国多名红帽架构师(RHCA)基于最新Linux系统共同编写的高质量Linux技术自学教程,极 ...

  9. fragment事务 的基本处理

    处理fragment事务 动态加载fragmentMyFragment2 fragment2=new MyFragment2();//new出一个fragment对象FragmentManager f ...

  10. 4.5. scrapy两大爬虫类_Spider

    一:Spider Spider类定义了如何爬取某个(或某些)网站.包括了爬取的动作(例如:是否跟进链接)以及如何从网页的内容中提取结构化数据(爬取item). 换句话说,Spider就是您定义爬取 的 ...