开始你的测试

来源:互联网 发布:淘宝官方网址是多少 编辑:程序博客网 时间:2024/06/10 16:39
  1. 以下内容翻译自Google官方文档:Getting Started with Testing

  2. 水平有限自己感觉很多内容翻译并不到位,但找不到更好的表达方式,如果您觉着有更好的表达方式,帮助我改进!

编写和运行测试是Android App开发过程中非常重要的一个环节。编写良好的测试不仅可以帮助你在开发过程中早早的发现bug,同时还可以让你对自己的代码充满自信。使用Android Studio,你可以在不同的物理设备上或者是Android虚拟设备上运行本地单元测试 或者 instrumented tests。

本地单元测试是运行在你的本地机器上的测试,它不需要依赖Android Framework 或者 Android 设备。为了学习如何开发本地单元测试,查看:Building Local Unit Tests

Instrumented tests是运行在Android设备或者模拟器上的测试。这些测试可以获取Instrumentation 信息,比如正在测试的App的Context。它可以用来进行单元、UI、或者App组件的集成测试。为了学习如何开发instrumented 测试来满足你的特殊需求,查看这些附加主题:

  • 构建Instrumented单元测试 —— 构建更复杂的有Android依赖的单元测试使用mock对象不是很容易能够满足。
  • 自动化UI测试 —— 创建测试来验证当用户单独跟你的App 或者跨越过个App进行交互时,你的UI能否表现正常。
  • 测试App组件的集成 —— 检验用户不直接进行交互的组件的表现,比如一个Service或者一个Content Provider

这节课教你如何使用Android Studio来构建和运行你的测试。如果你还没有使用Android Studio,你可以学习如何使用命令行来运行你的测试。

为你的工程配置本地单元测试

在你的Android Studio工程中,你必须存储本地单元测试的源文件在一个特殊的源码目录里(src/test/java)。将你的单元测试聚集在一个单独的源码集合里,这样做可以改善工程目录的组织形式。

对于生产代码,你可以创建本地单元测试为具体的种类或者构建类型。保证你的单元测试的源码目录树和生产源码的源码目录树相对应,比如:

这里写图片描述

为了使用JUnit 4 框架提供的标准Api,你需要为你的工程配置测试依赖。如果你的测试需要和Android依赖进行交互,引入Mockito库来精简你的本地单元测试。为了学习在你的本地单元测试中如何使用mock对象,查看 Mocking Android dependencies

在你的App最顶级的build.gradle文件中(不是module中的build.gradle),你需要具体声明这些libraries 作为依赖:

dependencies {    // Required -- JUnit 4 framework    testCompile 'junit:junit:4.12'    // Optional -- Mockito framework    testCompile 'org.mockito:mockito-core:1.10.19'}

为你的项目配置Instrumented 测试

在Android Studio工程中,你必须将instrumentated 测试的源码放在一个特殊的目录下(src/androidTest/java)。

下载android测试支持库设置 ,它提供了Api,你可以快速为你的App构建和运行instrumented test。测试支持库包括一个JUnit 4 test runner (AndroidJUnitRunner ) 和 进行功能UI测试的Api(Espresso and UI Automator)

为了使用测试runner和测试支持库提供的Api规则,你需要为你的工程配置Android测试依赖。为了简化你的测试开发,我们也推荐你引入Hamcrest library,借助Hamcrest matcher api,你可以创建更多灵活的断言。

在你的App的顶级build.gradle 文件中(不是module中的build.gradle),你需要添加如下libraries 作为依赖:

dependencies {    androidTestCompile 'com.android.support:support-annotations:23.0.1'    androidTestCompile 'com.android.support.test:runner:0.4.1'    androidTestCompile 'com.android.support.test:rules:0.4.1'    // Optional -- Hamcrest library    androidTestCompile 'org.hamcrest:hamcrest-library:1.3'    // Optional -- UI testing with Espresso    androidTestCompile 'com.android.support.test.espresso:espresso-core:2.2.1'    // Optional -- UI testing with UI Automator    androidTestCompile 'com.android.support.test.uiautomator:uiautomator-v18:2.1.1'}

为了使用Junit 4 测试类,确保在你的工程中配置了AndroidJUnitRunner 作为默认的测试 instrumentation runner,通过在你的App module 级别的build.gradle 文件中引入了下面的设置:

android {    defaultConfig {        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"    }}

使用测试工件来工作

Android Studio有两种类型的测试工件:Android Instrumentation 测试和 单元测试。在此之前,你一次仅仅只能使用一个测试工件来工作。现在,两个测试工件都可以工作了。两个测试工件都可以工作的优点是,你的代码中的任何改变他们两个都可以感知到。比如,如过你重命名了一个类,该类两个测试工件都可以获取到,他们就可以知道该类的名字进行了重构。

下面的插图向你展示了,当这两个工件一起工作时你的工程看起来的样子。注意,两个测试工件的阴影。

这里写图片描述

构建和运行你的测试

Android Studio 在开发环境中提供了所有你需要的工件,借助他们你可以进行构建,运行和分析你的测试。你也可以运行instrumented测试在不同配置的设备中,同时,使用Cloud Test Lab进行整合。

注意:当运行和调试instrumented测试的时候,Android Studio不提供Instant Run需要的额外的方法注入并且关闭了该属性。

运行本地单元测试

运行你的本地单元测试:

  1. 在你的工程窗口中,右键你的工程同时同步你的工程。
  2. 在你的工程窗口中,定位到你的单元测试类或者方法,然后右键它选择运行。运行你的单元测试目录下的所有测试,在目录上右键同时选择运行测试。

Android中的Gradle 插件编译位于默认目录(src/test/java)下的本地单元测试代码,构建一个测试App,然后在本地使用默认的test runner class 来执行它。Android Studio接着在运行窗口展示结果。

运行Instrumented测试

运行你的instrumented测试:

  1. 在工程窗口,定位到你的instrumented测试类或者方法,接着右键和运行它使用Android 测试配置。为了运行所有的在instrumented测试目录里的测试,在该目录上右键然后选择运行测试。

Android中的Gradle 插件编译位于默认目录(src/androidTest/java)下的instrumented测试代码,构建一个测试Apk和一个生产Apk,将两个apk都安装在连接的设备或者模拟器上,然后运行该测试。Android Studio接着在运行窗口展示instrumented测试的运行结果。

借助云测试实验室来运行Instrumented测试

使用云测试实验室,你可以同时测试你的App在许多流行的Android设备上,跨越多种语言,屏幕方向,和各种版本的Android平台。在Google的远程数据中心,这些测试运行在真实的物理设备上。你也可以配置你的instrumented测试当云测试实验室在运行测试的时候进行截屏。你可以用命令行工具或者从Android Studio整合的测试工具,发布测试到云测试实验室。

Android Studio允许你连接到Google云平台账户,来配置你的测试,发布测试到云测试实验室,同时在你的本地开发环境中分析测试结果。Android Studio的云测试实验室支持以下Android测试框架:Espresso, UI Automator 2.0 , 或者Robotium。测试结果提供了测试log同时包含App失败的详细信息。

在你开始使用云测试实验室之前,你需要:

  1. 创建一个Google云平台账户,来进行结算费用使用。
  2. 为你的App创建一个Google云项目。
    设置一个可以进行结算的账户和你创建的项目进行关联。

配置一个测试matrix然后运行测试

Android Studio 提供了整合的工具,他们允许你配置,你想如何发布你的测试到云测试实验室。在你创建了Google云项目并结算后,你可以创建一个测试配置然后运行你的测试:

  1. 从主菜单里,点击 Run > Edit Configurations
  2. 点击添加 New Configuration 然后选择Android Tests
  3. 在Android 测试配置对话框里:
    a. 输入或者选择你测试的详情,比如测试名,module类型,测试类型和测试类。
    b.从Deployment Target Options的下来菜单里选择Cloud Test Lab Device Matrix
    c.如果你还没有登入,点击连接至Google云平台同时允许Android Studio使用你的账户。
    d. 下面到了云工程,点击扳手按钮然后从列表里选择你的Google云平台工程。

  4. 创建和配置一个测试matrix:
    a. 接着到Matrix Configuration下拉列表,点击省略号按钮打开一个dialog.
    b. 点击Add New Configuration (+).
    c. 在name输入域里,为你的新配置输入一个名字。
    d. 为你想测试的App选择设备,Android 版本,位置 和屏幕方向。云测试实验室会结合你选择每一个配置选项进行测试并生成测试结果
    e. 点击OK来保存你的配置。

  5. 在Run/Debug配置dialog中点击OK,退出。
  6. 点击run来运行你的测试。

这里写图片描述
插图1. 为云测试实验室创建一个测试配置

分析测试结果

当云测试实验室跑完了你的测试后,运行窗口将会展示测试结果,如插图2所示。你可能需要点击show passed 来查看所有你已经执行的测试。

这里写图片描述
插图2. 查看云测试实验室的instrumented测试结果。

你也可以分析你的测试结果在web上,通过在运行窗口的开始部分展示的link ,如插图3所示。

这里写图片描述
插图3. 点击链接查看详细的测试结果在web上。
To learn more about interpreting web results, see Analyzing Cloud Test Lab Web Results.

为了学习更多web结果的解释,参看 Analyzing Cloud Test Lab Web Results

0 0
原创粉丝点击