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

时间:2021-06-10 15:53:17

在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进行测试
实现测试代码如下:

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测试】AndroidStudio通过UIAutomator进行测试