Android cts介绍
来源:互联网 发布:温州淘宝技术培训 编辑:程序博客网 时间:2024/06/15 05:31
Android cts介绍
1 cts编译使用
1.1编译生成CTS:
1.2启动设备
emulator@android-sdk-2.3 -show-kernel
1.3启动CTS
cd
1.4.基本操作
1.4.1 help
1.4.2测试计划
1.4.3添加计划
1.4.4启动测试
1.4.5删除计划
1.4.6测试结果
1.4.7其他辅助命令
2 编译CTS生成文件
2.1文件cts
├──all_cts_core_files_stamp
├──all_cts_files_stamp
├──android-cts
│
│
│
│
│
│
│
│
│
│
│
│
│
│
│
│
│
│
│
├──android-cts.zip
└──temp
我们最关心到所repository目录
2.2文件目录repository
├──host_config.xml
├──log_2011.08.23_20.00.30_.txt
├──log_2011.08.26_17.44.11_.txt
├──log_2011.08.26_17.45.03_.txt
├──log_2011.08.29_08.53.30_.txt
├──log_2011.08.29_09.08.54_.txt
├──log_2011.08.29_13.42.39_.txt
├──plans
│
│
│
│
│
│
│
│
├──results
│
│
│
│
│
│
│
│
│
│
│
│
│
│
│
│
│
│
│
└──testcases
可以看出 : plans目录下为以xml格式定义到测试方案
3 cts源文件
3.1 从根目录开始
.
├──Android.mk
├──apps
│
│
├──CleanSpec.mk
├──CtsHostLibraryList.mk
├──CtsTestCaseList.mk
├──CtsTestCoverage.mk
├──development
│
├──libs
│
│
│
│
├──tests
│
│
│
│
│
│
│
│
│
│
│
│
│
│
│
└──tools
3.1.1Android.mk
3.1.2子目录:tools
3.1.3子目录:tests
LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE_TAGS := tests
LOCAL_SRC_FILES := $(call all-java-files-under, src)\
LOCAL_JAVA_LIBRARIES := android.test.runner
# Resource unit tests use a private locale and some densities
LOCAL_AAPT_FLAGS = -c xx_YY -c cs -c 32dpi -c 240dpi -c160dpi
LOCAL_PACKAGE_NAME := CtsTestStubs
include $(BUILD_PACKAGE)
# Build the test APK using its own makefile, and any otherCTS-related packages
include $(call all-makefiles-under,$(LOCAL_PATH))
3.1.3.1 test目录下每个子目录包括一个test case
├──accessibilityservice
├──accounts
├──Android.mk
├──app
├──webkit
└──widget
3.1.3.2core目录下每个子目录包括一个testsuite
root@fe:~/net/workspace/exdroid/android2.3.4/cts/tests/core#tree -L 2
.
├──Android.mk
├──ctscore.mk
├──dom
│
│
├──luni-io
│
│
├──luni-lang
│
│
├──luni-net
│
│
├──luni-util
│
│
├──runner
│
│
│
└──xml
3.1.3.3appsecurity-tests/test-apps
root@fe:~/net/workspace/exdroid/android2.3.4/cts/tests/appsecurity-tests/test-apps#tree -L 1
.
├──Android.mk
├──AppAccessData
├──AppWithData
├──InstrumentationAppDiffCe
├──PermissionDeclareApp
├──SharedUidInstall
├──SharedUidInstallDiffCert
├──SimpleAppInstall
├──SimpleAppInstallDiffCert
├──TargetInstrumentationApp
3.2 小结
4 CTS 的细节内容
4.1apidemo测试用例
4.1.1从test plan开始
<?xml version="1.0"encoding="UTF-8"?>
<TestPlan version="1.0">
</TestPlan>
可见,某个 test plan只需要包括一个到具体测试用例的uri申明即可。
该 uri的定义在 testcases 子目录下:
/android/out/host/linux-x86/cts/android-cts/repository/testcases$cat ApiDemosReferenceTest.xml
<?xml version="1.0"encoding="UTF-8"?>
<TestPackage AndroidFramework="Android 1.0"apkToTestName="ApiDemos" appNameSpace="android.apidemos.cts"appPackageName="android.apidemos.cts" jarPath=""name="ApiDemosReferenceTest"packageToTest="com.example.android.apis" referenceAppTest="true"runner="android.test.InstrumentationTestRunne
</TestPackage>
可见 , CTS在 Android的 InstrumentationTest 上又包了一层
照字面理解,它要测试 ApiDemo,测试的代码是ApiDemoReferenceTest,使用的Testrunner 是:android.test.InstrumentationTestRunne
~/android2.3.4/out/host/linux-x86/cts/android-cts/repository/testcases$ls -l ApiDemo*
-rw-r--r-- 1
-rw-r--r-- 1
-rw-r--r--1
现在看看这些位于out目录下的文件是如何生成的。
再看源码树
根据参考,要在 cts中添加一个 testpackage, 必须将其加入:build/core/tasks/cts.mk.
4.2CtsExample
里面有:
<Entryuri="android.example"/>
-rw-r--r-- 1 CtsExampleTestCases.apk
-rw-r--r-- 1
看看
<?xml version="1.0"encoding="UTF-8"?><TestPackageAndroidFramework="Android 1.0"appNameSpace="com.android.cts.example"appPackageName="android.example" name="CtsExampleTestCases"runner="android.test.InstrumentationTestRunne
其中包含两个testcase
我们再看 build/core/tasks/cts.mk :
CtsExampleTestCases \
该包位于:
.
├──AndroidManifest.xml
├──Android.mk
└──src
该package到特殊之处在于它到测试代码以及被测试代码都在同一个包内
可以发现,相比较ApiDemos而言,这是一个更典型到CTS测试例子
另外,还发现每个例子其包的最后一段总是cts,不知是不是硬性要求。这也可以说明CTS是基于instrumentationtest,但是又不等同。
疑问
AndroidManifest.xml 中定义的 packagename为:com.andoid.cts.example
Example 类属于:
package android.example;
public class Example
ExampleTest 类属于:
package android.example.cts;
public class ExampleTest extends TestCase
非常奇怪!
5 CTS框架
5.1 CTS框架图
5.2 CTS运行流程
5.2.1CTS程序入口
5.2.2HostLock.lock
5.2.3初始化并管理目标设备:DeviceManager
5.2.4 启动控制输入功能:ConsoleUi
5.2.5 解析输入指令:CommandParser
cp.getAction() will get "start "
5.2.6 启动命令执行: ConsoleUi.startUi()
5.2.7 转到当前测试中:TestSession
n
n
5.2.8 管理寄宿设备:TestDevice
n
n
5.3主要类功能
l
l
l
l
l
l
l
l
l
5.4 往CTS中添加Camera TestCase
Ø
Ø
Ø
appNameSpace:表示测试用例命名空间
appPackageName:表示应用程序测试包
name:表示此测试包的配置信息文件名
runner:表示运行此测试用例的入口
targetNameSpace:表示测试对象的命名空间
- Android cts介绍
- android CTS 介绍
- Android下CTS测试介绍
- Android CTS
- Android CTS
- Android CTS
- Android CTS
- android CTS
- Android CTS
- CTS Fail: android.hardware.cts.CameraTest-- testJpegExif
- cts android.bluetooth.cts.BluetoothLeScanTest --testBasicBleScan fail
- cts fail:com.android.cts.aadb.TestDeviceFuncTest
- Android CTS 测试研究
- android 之 CTS
- Android CTS 总结
- Android CTS 总结
- Android的CTS测试
- Android CTS 总结
- Android、JUnit深入浅出(七)——总…
- ubuntu samba
- 特异功能--shell脚本字符串处理
- repo使用
- Android Camera框架
- Android cts介绍
- SHELL读取文件的方法
- 《领域驱动模型设计》 阅读笔记
- diff和patch
- shell编程——if语句
- linux(ubuntu)访问windows共享文件
- python小笔记
- repo使用
- Android系统开发编译环境配置