java+uiautomator 打包运行

本文详细介绍了如何在Eclipse环境中利用UIAutomator进行Android应用的自动化测试,包括创建Java工程、添加必要Jar包、编写测试用例脚本、编译测试用例、生成并运行jar文件等步骤。

 以Eclipse为例: 1.创建一个Java工程 File-->New-->Java Project 输入工程名称,例如testMessage. 点击Finish

 

2.添加必要的Jar包 在Project Explorer中右击刚刚创建的这个工程,选择 Properties-->Java build Path添加如下JAR包

 

 a.选择Add library -->JUnit选择Junit4 

b.选择Add External JARS, 选择sdk/platforms/android-*/目录下的uiautomator.jar和android.jar,路径中的*请使用自己以下载的最新版本。

3.File-->new-->Class创建一个新的文件,例如MessageTestCase,并确保该文件继承自UiAutomatorTestCase.

 

public class MessageTestCase extends UiAutomatorTestCase{
}

4.接下来就是编写测试用例脚本了

 

5.编译测试用例 ,uiautomator的编译工具是Ant,在编译之前我们先要生成build.xml,生成方法如下:

 

android create uitest-project -n <name> -t 3 -p <path>

 

 

其中-t 后的数字13 是android版本在当前sdk中的target值,通常一个sdk中我们会下载多个版本的android platform 可以通过一下命令查看:

android list targets

 

 

我选的是android-22目录下的API,可以看到对应的id是13

首先进入android-sdk-windows\tools目录下

D:
cd D:\Program Files\android-sdk-windows\tools

然后输入命令运行
android.bat create uitest-project -n testMessage -t 13  -p "E:\workspace\testMessage"

如果已经添加tools环境变量到path中的话,就可以直接使用android  create uitest-project -n testMessage -t 13  -p "E:\workspace\testMessage"

其中E:\workspace\testMessage是工程目录所在路径。

输出结果如下,bulid.xml文件生成在工程目录下:

 

 

6.接着进入到工程目录下进行编译: 注:编译需要安装ant,安装方式请google之

E:
cd E:\workspace\testMessage
ant build
编译成功会生成一个jar包到工程目录下bin文件夹里面

7.下面还需要将这个jar文件拷贝到手机的 /data/local/tmp/ 目录中,拷贝操作可以通过一下命令实现

adb push E:\workspace\testMessage\bin\testMessage.jar   /data/local/tmp

8.最后运行jar文件:

adb shell uiautomator runtest testMessage.jar -c MessageTestCase

MessageTestCase是要运行的脚本文件,如果有包名的话 前面还要加上包名

当然也可以加上参数--nohup,脱离数据线运行。--nohup作为控制,是否断开数据线依然可以运行

adb shell uiautomator runtest testMessage.jar --nohup -c MessageTestCase

 


 

<think>好的,我现在需要帮助用户了解如何使用UiAutomator 2.0进行自动化测试。首先,我需要回顾用户提供的引用内容,确保信息准确。用户给出的引用主要是关于UiAutomator的依赖配置和基本概念。 首先,用户想知道如何运行UiAutomator 2.0。根据引用[5],UiAutomator 2.0是基于Instrumentation的,测试代码写在androidTest目录下,使用单元测试方式执行。这意味着用户需要创建一个Android测试项目,并在其中编写测试类。 接下来,引用[1]、[4]、[5]提到依赖配置,用户需要正确添加gradle依赖。例如,androidTestImplementation 'androidx.test.uiautomator:uiautomator:2.2.0' 或类似的版本。需要注意不同版本的依赖写法可能不同,比如v18可能涉及支持库版本。 然后,测试类的结构方面,引用[1]和[5]指出测试类需要继承InstrumentationTestCase,并使用@RunWith注解。用户需要编写测试方法,并使用UiDevice.getInstance来获取设备实例,执行点击、滑动等操作。 此外,用户可能需要使用UiAutomator Viewer来分析界面元素,如引用[1]提到的。这部分需要指导用户如何启动Viewer,获取界面控件的属性,如resource-id、text等,以便在测试代码中定位元素。 运行测试的方式通常是通过Android Studio的右键运行测试,或者使用gradle命令,如./gradlew connectedAndroidTest。引用[5]提到测试可以打包成APK,安装在设备上运行,脱离电脑,这可能也是用户需要的信息。 用户可能遇到的常见问题包括依赖配置错误、无法找到界面元素、测试代码结构不正确等。需要提醒用户检查依赖是否添加到androidTestImplementation,而不是普通的implementation,否则可能导致类找不到。 另外,引用[3]提到UiAutomator 2.0基于Instrumentation的优势,可能需要简单说明,比如更好的兼容性,与Android框架的集成更紧密,支持更多操作。 最后,根据用户提供的示例回答结构,需要生成相关问题,可能涉及配置问题、元素定位、测试执行方式、结果查看等。 现在需要将上述思路组织成结构化的回答,分步骤说明配置、编写测试、运行测试等,并确保引用正确。同时,注意使用中文,LaTeX格式正确,以及生成相关问题。</think>### 如何使用UiAutomator 2.0进行自动化测试 #### **1. 环境配置** - **添加依赖**:在模块的`build.gradle`文件中添加UiAutomator 2.0依赖。注意需使用`androidTestImplementation`,以确保依赖仅作用于测试环境: ```groovy androidTestImplementation 'androidx.test.uiautomator:uiautomator:2.2.0' ``` 若需兼容Android Support库,可使用: ```groovy androidTestImplementation 'com.android.support.test.uiautomator:uiautomator-v18:2.1.3' ``` 注意避免将依赖误添加至`implementation`,否则会导致编译错误[^1][^4][^5]。 - **启用Viewer工具**:通过命令行或Android Studio启动`uiautomatorviewer`,用于分析应用界面元素的属性(如`resource-id`、`text`)。 --- #### **2. 编写测试类** - **测试类结构**: ```java @RunWith(AndroidJUnit4.class) public class ExampleUiTest { private UiDevice mDevice; @Before public void setup() { mDevice = UiDevice.getInstance(InstrumentationRegistry.getInstrumentation()); } @Test public void testLogin() { // 定位元素并操作 mDevice.findObject(By.text("登录")).click(); mDevice.findObject(By.res("com.example:id/username")).setText("user"); mDevice.findObject(By.res("com.example:id/password")).setText("pass"); mDevice.findObject(By.res("com.example:id/submit")).click(); } } ``` - 使用`UiDevice`控制设备,通过`By.text()`或`By.res()`定位元素[^5]。 - 测试类需放置在`androidTest`目录下,并以单元测试注解(如`@Test`)标记。 --- #### **3. 运行测试** - **通过Android Studio**:右键点击测试类或方法,选择`Run 'ExampleUiTest'`。 - **通过命令行**:执行以下命令运行所有测试: ```bash ./gradlew connectedAndroidTest ``` - **脱离电脑运行**:测试代码会打包成APK并安装到设备,可通过ADB命令触发执行[^5]。 --- #### **4. 核心API说明** - `UiDevice`:提供设备级操作(如按键、截图)。 - `UiObject`:表示界面元素,支持点击、滑动等操作。 - `UiSelector`:通过属性组合定位元素(例如`new UiSelector().className("Button").text("OK")`)。 --- #### **常见问题** - **依赖冲突**:确保`androidTestImplementation`与其他测试库(如Espresso)版本兼容。 - **元素定位失败**:使用UiAutomator Viewer确认元素属性是否动态生成,必要时使用`waitForExists()`等待元素加载。 - **权限问题**:在测试前通过ADB授予应用所需权限(如`adb shell pm grant <package> android.permission.CAMERA`)。 ---
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值