Android开发经验谈Android开发Android知识

使用Instrumentation命令测试cts apk

2018-02-10  本文已影响225人  android之子

最近在android tv的项目,我负责媒体相关模块,为了更好的调试cts,gts某个模块的测试用例,加快debug速度,可以用adb使用命令来测试单个用例。使用am Instrument命令来完成本地测试debug,不需要依赖cts的整个测试包环境。

首先说下instrument是什么,instrument为am命令的一个子命令。用于启动一个Instrumentation测试。首先连接手机或者模拟器,通过adb shell命令,进入shell层进行操作。其实他还有很多功能,比如我们应用可以通过使用instrument,注册hook到系统的框架中,具体以后有机会我整理下,今天我们就说明下命令使用。

命令格式:

 instrument [-r] [-e ] [-p ] [-w]         [--user | current]         [--no-window-animation] [--abi ]      
Start an Instrumentation.  Typically this target is in the     form / or only if there     is only one instrumentation. 

Options are:     

-r: print raw results (otherwise decode REPORT_KEY_STREAMRESULT).  Use with  [-e perf true] to generate raw output for performance measurements.     

-e : set argument to .  For test runners a         common form is [-e [,...]].     

-p : write profiling data to      

-m: Write output as protobuf (machine readable)     

-w: wait for instrumentation to finish before returning.  Required for  test runners.   

 --user | current: Specify user instrumentation runs in;  current user if not specified.     

--no-window-animation: turn off window animations while running.     

--abi : Launch the instrumented process with the selected ABI. This assumes that the process supports the selected ABI

各项参数:

-r:以原始形式输出测试结果;该选项通常是在性能测试时与[-e perf true]一起使用。

-e name value:提供了以键值对形式存在的过滤器和参数。例如:-e testFile (运行文件中指定的用例);-e package (运行这个包中的所有用例)……  有十几种。 

-p file:将分析数据写入file。

-w:测试运行器需要使用此选项。-w / :和在测试工程的AndroidManifest.xml中查找,作用是保持adb shell打开直至测试完成。

--no-window-animation:运行时关闭窗口动画。

--useruser_id | current:指定仪器在哪个用户中运行;如果未指定,则在当前用户中运行。

命令使用:

测试提供以下步骤:

1.安装测试apk,比如adb installGtsMediaTestCases.apk

2.找到本机的测试用例:pm list Instrumentation

3.如果想测试整个包,使用命令:

am instrument  -w com.google.android.media.gts/android.support.test.runner.AndroidJUnitRunner

4.如果想单个某个case使用以下命令:

 am instrument -e -r class com.google.android.media.gts.WidevineYouTubePerformanceTests#testL1Cenc1080P60 -w com.google.android.media.gts/android.support.test.runner.AndroidJUnitRunner

测试通过的:

测试失败的:

class可以去掉#testL1Cenc1080P60就是测试整个类。

5.运行所有测试用例除了指定的类:adb shell am instrument -w -r -e notClass com.google.android.media.gts.WidevineYouTubePerformanceTests com.google.android.media.gts/android.support.test.runner.AndroidJUnitRunner

6.运行所有测试除了指定的用例:adb shell am instrument -w -r -e notClass com.google.android.media.gts.WidevineYouTubePerformanceTests#testL1Cenc1080P60 com.google.android.media.gts/android.support.test.runner.AndroidJUnitRunner

7.以上所有参数也可以通过标签配置在AndroidManifest文件,比如 ,通过shell命令 传入的参数将覆盖AndroidManifest文件中配置的参数。

上一篇下一篇

猜你喜欢

热点阅读