将 Device Farm 与 Gradle 构建系统集成 - AWS Device Farm

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

将 Device Farm 与 Gradle 构建系统集成

Device Farm Gradle 插AWS件提供 Device Farm 与 Android Studio 中的 Gradle 构建系统的集成。有关更多信息,请参阅 Gradle

注意

要下载 Gradle 插件,请转至GitHub并按照中的说明进行操作。构建 Device Farm Gradle 插件

Device Farm Gradle 插件可在您的 Android Studio 环境中提供 Device Farm 功能。您可以在由 Device Farm 托管的真实 Android 手机和平板电脑上开始测试。

本节包含设置和使用 Device Farm Gradle 插件的一系列过程。

依赖项

运行时

  • Device Farm Gradle 插件需要 AWS 移动版 SDK 1.10.15 或更高版本。有关更多信息以及要安装SDK,请参阅AWS移动SDK

  • Android tools builder test api 0.5.2

  • Apache Commons Lang3 3.3.4

对于单元测试

  • Testng 6.8.8

  • Jmockit 1.19

  • Android gradle tools 1.3.0

第 1 步:构建 Device Farm Gradle 插AWS件

此插AWS件提供 Device Farm 与 Android Studio 中的 Gradle 构建系统的集成。有关更多信息,请参阅 Gradle

注意

构建此插件是可选的。通过 Maven Central 发布了此插件。如果您希望允许 Gradle 直接下载此插件,请跳过此步骤并跳转到 第 2 步:设置 Device Farm Gradle 插AWS件

构建此插件
  1. 前往GitHub并克隆存储库。

  2. 使用 gradle install 构建此插件。

    此插件将安装到您的本地 maven 存储库。

下一步: 第 2 步:设置 Device Farm Gradle 插AWS件

第 2 步:设置 Device Farm Gradle 插AWS件

请使用此处的过程克隆存储库并安装插件:构建 Device Farm Gradle 插件 (如果您尚未执行此操作)。

配置 Device Farm Gradle 插AWS件
  1. build.gradle 中的依赖项列表添加插件项目。

    buildscript { repositories { mavenLocal() mavenCentral() } dependencies { classpath 'com.android.tools.build:gradle:1.3.0' classpath 'com.amazonaws:aws-devicefarm-gradle-plugin:1.0' } }
  2. build.gradle 文件中配置插件。以下测试特定的配置应作为您的指南:

    apply plugin: 'devicefarm' devicefarm { // Required. The project must already exist. You can create a project in the AWS Device Farm console. projectName "My Project" // required: Must already exist. // Optional. Defaults to "Top Devices" // devicePool "My Device Pool Name" // Optional. Default is 150 minutes // executionTimeoutMinutes 150 // Optional. Set to "off" if you want to disable device video recording during a run. Default is "on" // videoRecording "on" // Optional. Set to "off" if you want to disable device performance monitoring during a run. Default is "on" // performanceMonitoring "on" // Optional. Add this if you have a subscription and want to use your unmetered slots // useUnmeteredDevices() // Required. You must specify either accessKey and secretKey OR roleArn. roleArn takes precedence. authentication { accessKey "AKIAIOSFODNN7EXAMPLE" secretKey "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY" // OR roleArn "arn:aws:iam::111122223333:role/DeviceFarmRole" } // Optionally, you can // - enable or disable Wi-Fi, Bluetooth, GPS, NFC radios // - set the GPS coordinates // - specify files and applications that must be on the device when your test runs devicestate { // Extra files to include on the device. // extraDataZipFile file("path/to/zip") // Other applications that must be installed in addition to yours. // auxiliaryApps files(file("path/to/app"), file("path/to/app2")) // By default, Wi-Fi, Bluetooth, GPS, and NFC are turned on. // wifi "off" // bluetooth "off" // gps "off" // nfc "off" // You can specify GPS location. By default, this location is 47.6204, -122.3491 // latitude 44.97005 // longitude -93.28872 } // By default, the Instrumentation test is used. // If you want to use a different test type, configure it here. // You can set only one test type (for example, Calabash, Fuzz, and so on) // Fuzz // fuzz { } // Calabash // calabash { tests file("path-to-features.zip") } }
  3. 使用以下任务运行 Device Farm 测试:gradle devicefarmUpload

    构建输出将输出一个指向 Device Farm 控制台的链接,您可在其中监控测试执行情况。

下一步: 在 Dev IAM ice Farm Gradle 插件中生成用户

第 3 步:在 Device Farm Gradle 插件中生成IAM用户

AWS Identity and Access Management (IAM) 可帮助您管理使用 AWS 资源的权限和策略。本主题将引导您生成有权访问 Dev AWS ice Farm 资源的IAM用户。

如果您还没有完成步骤 1 和 2,请先完成这两个步骤,然后再生成 IAM 用户。

我们建议您不要使用 AWS 根账户来访问 Device Farm。相反,请在您的 AWS 账户中创建一个新IAM用户(或使用现有IAM用户),然后使用该IAM用户访问Device Farm。

注意

用于完成以下步骤的 AWS root 账户或IAM用户必须具有创建以下IAM策略并将其附加到该IAM用户的权限。有关更多信息,请参阅使用策略

使用适当访问策略在 IAM 中创建新用户
  1. 从 IAM 打开 https://console.aws.amazon.com/iam/ 控制台。

  2. 选择用户

  3. 选择创建新用户

  4. 请输入您选择的用户名称。

    例如,GradleUser

  5. 选择创建

  6. 选择下载凭证,并将这些凭证保存在您之后可以轻松检索它们的位置。

  7. 选择关闭

  8. 在列表中选择用户名称。

  9. 权限下,通过单击右侧的向下箭头来展开内联策略标题。

  10. 选择单击此处,其中显示没有任何内联策略可显示。要创建一个,请单击此处

  11. 设置权限屏幕上,选择自定义策略

  12. 选定选择

  13. 为您的策略提供名称,例如 AWSDeviceFarmGradlePolicy

  14. 将以下策略粘贴到策略文档中。

    { "Version": "2012-10-17", "Statement": [ { "Sid": "DeviceFarmAll", "Effect": "Allow", "Action": [ "devicefarm:*" ], "Resource": [ "*" ] } ] }
  15. 选择应用策略

下一步:配置测试类型

有关更多信息,请参阅创建 IAM 用户 (AWS Management Console)设置

步骤 4:配置测试类型

默认情况下,Devic AWS e Farm Gradle 插件会运行适用于安卓和 Device Farm 的仪AWS器测试。如果要运行自己的测试或指定其他参数,可以选择配置测试类型。本主题提供有关每个可用测试类型的信息,以及您需要在 Android Studio 中执行哪些操作才能将其配置为可供使用。有关 Device Farm 中可用测试类型的更多信息,请参阅 在 Dev AWS ice Farm 中测试框架和内置测试

如果您还没有完成步骤 1 到 3,请先完成这些步骤,然后再配置测试类型。

注意

如果您要使用设备槽,请将其启用,设备槽功能默认情况下处于禁用状态。

Appium

Device Farm 支持 Appium Java 和 Android JUnit 版 TestNG。

您可以选择 useTestNG()useJUnit()JUnit 是默认值,不需要显式指定。

appium { tests file("path to zip file") // required useTestNG() // or useJUnit() }

内置:模糊

Device Farm 提供内置模糊测试类型,该测试类型将用户界面事件随机发送至设备,然后报告结果。

fuzz { eventThrottle 50 // optional default eventCount 6000 // optional default randomizerSeed 1234 // optional default blank }

有关更多信息,请参阅 正在运行 Device Farm 的内置模糊测试(Android 和 iOS)

Instrumentation

Device Farm 支持安卓版仪器(JUnit、Espresso、Robotium 或任何基于仪器的测试)。有关更多信息,请参阅 适用于安卓和 Device Farm 的仪AWS器

在 Gradle 中运行插桩测试时,Device Farm 会使用从你的androidTest目录生成的.apk文件作为测试的来源。

instrumentation { filter "test filter per developer docs" // optional }