android平台下UITesting环境配置

阅读更多
  • 1. android sdk至少需要android 4.1,所以先通过SDK manager更新sdk,我这里使用android4.2
  • 2. eclipse至少需要3.6.2,否则不支持
  • 3. 配置环境变量path,加入java,android sdk tool的路径
  • 4. 通过AVD Manager启动android4.2的虚拟机
  • 5. 在虚拟机上安装需要测试的apk软件(下面的测试用例只测试系统settings,不需要安装额外的软件)
  • 引用
    adb install
    http://developer.android.com/tools/help/adb.html#move
  • 6. 在命令行下运行uiautomatorviewer后弹出uiautomatorviewer窗口,点击Device Screenshot使uiautomatorviewer自动分析页面UI控件
  • 7. 在eclipse中创建java project,导入JUnit3,再导入jar:
  • 引用
    {sdkPath}\platforms\android-17\android.jar
    {sdkPath}\platforms\android-17\uiautomator.jar
  • 8. 增加com.knet.knetappTest.LaunchSettings.java
  • package com.knet.knetappTest;
    
    import com.android.uiautomator.core.UiObject;
    import com.android.uiautomator.core.UiObjectNotFoundException;
    import com.android.uiautomator.core.UiScrollable;
    import com.android.uiautomator.core.UiSelector;
    import com.android.uiautomator.testrunner.UiAutomatorTestCase;
    
    public class LaunchSettings extends UiAutomatorTestCase {
    
        public void testDemo() throws UiObjectNotFoundException {
    
            // Simulate a short press on the HOME button.
            getUiDevice().pressHome();
    
            // We’re now in the home screen. Next, we want to simulate
            // a user bringing up the All Apps screen.
            // If you use the uiautomatorviewer tool to capture a snapshot
            // of the Home screen, notice that the All Apps button’s
            // content-description property has the value “Apps”. We can
            // use this property to create a UiSelector to find the button.
            UiObject allAppsButton = new UiObject(new UiSelector().description("Apps"));
    
            // Simulate a click to bring up the All Apps screen.
            allAppsButton.clickAndWaitForNewWindow();
    
            // In the All Apps screen, the Settings app is located in
            // the Apps tab. To simulate the user bringing up the Apps tab,
            // we create a UiSelector to find a tab with the text
            // label “Apps”.
            UiObject appsTab = new UiObject(new UiSelector().text("Apps"));
    
            // Simulate a click to enter the Apps tab.
            appsTab.click();
    
            // Next, in the apps tabs, we can simulate a user swiping until
            // they come to the Settings app icon. Since the container view
            // is scrollable, we can use a UiScrollable object.
            UiScrollable appViews = new UiScrollable(new UiSelector().scrollable(true));
    
            // Set the swiping mode to horizontal (the default is vertical)
            appViews.setAsHorizontalList();
    
            // Create a UiSelector to find the Settings app and simulate
            // a user click to launch the app.
            UiObject settingsApp = appViews.getChildByText(new UiSelector().className(android.widget.TextView.class.getName()), "Settings");
            settingsApp.clickAndWaitForNewWindow();
    
            // Validate that the package name is the expected one
            UiObject settingsValidation = new UiObject(new UiSelector().packageName("com.android.settings"));
            assertTrue("Unable to detect Settings", settingsValidation.exists());
        }
    }
    
  • 9.在项目根目录下增加build.xml,local.properties,project.properties,内容分别是:
  • 
    
    
        
        
    
        
        
    
        
        
        
            
        
    
        
        
    
        
        
    
        
        
    
        
        
        
    
    
    

    sdk.dir={sdkPath}
    

    target=android-17
    
  • 10. 右击build.xml,run as “ant build”,第一次会失败,提示ant版本过低,至少需要1.8.0,然后下载新版本ant,在eclipse中将ant home指过去,再次运行即可
  • 11. 在项目的bin目录下生成出uitest.jar(uitest可以在build.xml中设置)
  • 12. 在命令行中运行下述代码,将测试jar拷入虚拟机中
  • 引用
    adb push {path}/uitest.jar /data/local/tmp/
  • 13. 接着在命令行中运行下述代码,开始测试
  • 引用
    adb shell uiautomator runtest uitest.jar -c com.knet.knetappTest.LaunchSettings

    应该出现:
    引用
    INSTRUMENTATION_STATUS: current=1
    INSTRUMENTATION_STATUS: id=UiAutomatorTestRunner
    INSTRUMENTATION_STATUS: class=com.knet.knetappTest.LaunchSettings
    INSTRUMENTATION_STATUS: stream=
    com.knet.knetappTest.LaunchSettings:
    INSTRUMENTATION_STATUS: numtests=1
    INSTRUMENTATION_STATUS: test=testDemo
    INSTRUMENTATION_STATUS_CODE: 1
    INSTRUMENTATION_STATUS: current=1
    INSTRUMENTATION_STATUS: id=UiAutomatorTestRunner
    INSTRUMENTATION_STATUS: class=com.knet.knetappTest.LaunchSettings
    INSTRUMENTATION_STATUS: stream=.
    INSTRUMENTATION_STATUS: numtests=1
    INSTRUMENTATION_STATUS: test=testDemo
    INSTRUMENTATION_STATUS_CODE: 0
    INSTRUMENTATION_STATUS: stream=
    Test results for WatcherResultPrinter=.
    Time: 40.034

    OK (1 test)


    INSTRUMENTATION_STATUS_CODE: -1
  • 14. 下述网址查看详细资料和测试开发API
  • 引用
    http://developer.android.com/tools/help/uiautomator/index.html

    你可能感兴趣的:(uitest,android,uiaumator,automation,qa)