android_测试分析(monkey,monekyrunner,uiautomator,Robotium,单元测试,启动性能)cts测试





  测试分析(monkey,monekyrunner,uiautomator,Robotium,单元测试,启动性能):
  $adb shell monkey -p com.nobody.appfilter -v 500; #monkey测试;
  monkey命令源码位置:development/cmds/monkey/src/com/android/commands/monkey;
  monkeyrunner.jar包在sdk的sdk/tools/lib;monkeyrunner.jar/chimpchat.jar/draw9patch.jar等prebuilt的工具;
  $monkeyrunner runner.py;#运行monkeyrunner的py脚本;
  $adb shell input text textInput//模拟输入textInput字符串;模拟事件全部是通过input命令来实现的;
  $adb shell input keyevent 3;#模拟home按键;
  $adb shell input tap 250 250;#tap模拟的是touch屏幕的事件,只需给出x/y坐标即可;
  $adb shell input swipe 250 250 300 300;#关于swipe同tap是一样的,只是他是模拟滑动的事件,给出起点和终点的坐标即可;
  uiautmotor需继承UiAutomatorTestCase;UiAutomatorTestCase继承了JUnit的TestCase;
  $adb shell uiautomator runtest LaunchSettings.jar -c com.uia.example.my.LaunchSettings; #uiautomator语法;
  UI automation test should extend UiAutomatorTestCase;
  public class UiAutomatorTestCase extends TestCase{ *** };com.android.uiautomator.testrunner包;/frameworks/testing/uiautomator/library/testrunner-src/com/android/uiautomator/testrunner目录;
  public abstract class TestCase extends Assert implements Test{ *** };junit.framework包;/external/junit/src/junit/framework目录;
  public final class UiAutomation{ *** };android.app包;内部利用IAccessibilityServiceConnection进行与AccessibilityManagerService的binder通讯;
  Robotium需继承ActivityInstrumentationTestCase2;第三方jar对操作进行了一系列的封装;
  public abstract class ActivityInstrumentationTestCase2<T extends Activity> extends ActivityTestCase{ *** };android.test包;/frameworks/base/test-runner/src/android/test;
  单元测试需继承ActivityUnitTestCase;
  public abstract class ActivityUnitTestCase<T extends Activity> extends ActivityTestCase{ *** };android.test包;/frameworks/base/test-runner/src/android/test;
  $adb shell am instrument –w XXXXXX; #-w是指定Instrumentation类的参数标志;
  启动性能,LaunchPerformanceBase是是启动性能测试容器;
  public class LaunchPerformanceBase extends Instrumentation{ *** };android.test包;@hide;android.test包;/frameworks/base/test-runner/src/android/test;
  mConext.startInstrumentation(*);//启动执行Instrumentation类; //apiDemo中的示例;
  mInstrumentation.startActivitySync(*);//启动activity;  mInstrumentation.runOnMainSync(*)//调用activity的主线程; mInstrumentation.waitForIdleSync(*);//等待application返回;
  $adb shell getevent /dev/input/event0; “0001 014a  00000001”,type事件类型码,code扫描码或键值,value值;


  在Activity中,直接启动单线程调用 mInstrumentation.sendStringSync("aa"); //动作注入,必须是同一uid的程序;
  adbShell动作注入调用的是 InputManager.getInstance().injectInputEvent(*);
    //InputManager类位于/frameworks/base/core/java/android/hardware/input下;getInstance()的Api为hide;
  $make cts #android源码编译好后,在编译cts.生成目录在out/host/linux-x86/cts/下.官网,http://source.android.com/compatibility/cts-intro.html



  源码下,$make cts; #生成目录在/out/host/linux-x86/cts/*下;  
  $sudo chmod 777 cts-tradefed; #在/out/host/linux-x86/cts/android-cts/tools目录;
  $./cts-tradefed; #启动;
  $list packages;  #列举已安装的cts测试;
  $run cts --p zzz.android.monkey;  #进行cts测试;




  UiAutomator:
  $uiautomatorviewer;  #<android-sdk>/tools/目录下;能够显示View结构;
  $android create uitest-project -n uiTest -t 1 -p UiAutomator/;  #生成build文件;
  $ant build;  #build测试jar文件;
  $adb push uiTest.jar /data/local/tmp/; #push文件;
  $adb shell uiautomator runtest uiTest.jar -c com.uia.example.my.LaunchSettings; #运行;





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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值