【Android测试】AndroidStudio通过UIAutomator进行测试

在eclipse中使用UIAutomator时步骤较为繁琐,而在Studio环境下只需要添加引用,编写测试类,运行测试类就可以实现。步骤较简单。

1.配置环境

在包依赖中添加对UIAutomator的引用,这里需要注意,引用包版本不能高于最低编译版本,也就是 minSdkVersion 的值,期初我的 minSdkVersion 为15,与添加的v18产生冲突。

    // Set this dependency to build and run UI Automator tests
    androidTestCompile 'com.android.support.test.uiautomator:uiautomator-v18:2.1.0'

2.测试类的实现

在添加引用后直接在测试包下创建测试类即可。以对官方应用计算器为例进行测试。测试类需要继承自UiAutomatorTestCase。在setUp()中进行测试初始化,在以test开头的测试方法中进行操作。
通过UiDevice可以进行手机按键的一些操作,比如休眠与唤醒,回退键等一些系统按键。
在setUp中先通过UiDevice对象跳转到页面主页,通过点击按钮进入所有apps的界面,对界面中各种按钮等对象的获取通过UiSelector进行定位,在UiAutomator中,所有的控件都是同样的UiObject。通过对按钮的description可以获取到该按钮。对页面的控件描述都可以通过sdk/tools文件夹下的uiautomatorviewer进行页面的显示获取。
操作到Calculator界面后通过文本内容获取控件模拟点击,最后将显示内容与预期内容进行对比。
【Android测试】AndroidStudio通过UIAutomator进行测试_第1张图片
实现测试代码如下:

public class CalculatorAndroidTest extends UiAutomatorTestCase {

    @Override
    protected void setUp() throws Exception {
        super.setUp();
        UiDevice device = getUiDevice();
        device.pressHome();
        UiObject allAppsButton = new UiObject(new UiSelector().description("Apps"));
        allAppsButton.clickAndWaitForNewWindow();
        UiObject cal = new UiObject(new UiSelector().text("Calculator"));
        cal.click();
    }

    public void testSum() throws UiObjectNotFoundException {
        new UiObject(new UiSelector().text("9")).click();
        new UiObject(new UiSelector().text("+")).click();
        new UiObject(new UiSelector().text("1")).click();
        new UiObject(new UiSelector().text("=")).click();

        UiObject res = new UiObject(new UiSelector().className("android.widget.EditText"));
        assertEquals("","10",res.getText());
    }

    public void testSub() throws UiObjectNotFoundException {
        new UiObject(new UiSelector().text("9")).click();
        new UiObject(new UiSelector().text("−")).click();
        new UiObject(new UiSelector().text("1")).click();
        new UiObject(new UiSelector().text("=")).click();

        UiObject res = new UiObject(new UiSelector().className("android.widget.EditText"));
        assertEquals("","8",res.getText());
    }

    public void testMul() throws UiObjectNotFoundException {
        new UiObject(new UiSelector().text("3")).click();
        new UiObject(new UiSelector().text("×")).click();
        new UiObject(new UiSelector().text("4")).click();
        new UiObject(new UiSelector().text("=")).click();

        UiObject res = new UiObject(new UiSelector().className("android.widget.EditText"));
        assertEquals("","12",res.getText());
    }

    public void testDiv() throws UiObjectNotFoundException {
        new UiObject(new UiSelector().text("9")).click();
        new UiObject(new UiSelector().text("÷")).click();
        new UiObject(new UiSelector().text("3")).click();
        new UiObject(new UiSelector().text("=")).click();

        UiObject res = new UiObject(new UiSelector().className("android.widget.EditText"));
        assertEquals("","3",res.getText());
    }
}

最后自动测试的过程:

你可能感兴趣的:(android测试)