Android 测试技能发展Android测试笔记Android单元测试

Android单元测试介绍

2018-04-14  本文已影响21人  changer0

本篇介绍Android相关的单元测试, 本篇为系列教程的开篇, 对Android单元测试做一个系统介绍.

本系列教程将介绍在Android应用中如何编写本地单元测试和instrumentation测试(设备测试).并通过Android Studio和Gradle来执行这些测试.

Android单元测试分类

Android应用运行在各种各样的设备中.另外,Android框架和其他相关的开源框架都在高速发展.要保证应用正常运行,有必要去写Android应用测试.这将会有助于优化和改善我们的Android应用.

Android的单元测试分为下列两种:

Android测试分类

相对于在Android设备上部署和运行测试所需的时间,本地的单元测试速度要快很多.如果你需要真正的Android系统环境,应首选本地单元测试,并且仅在Android平台上运行.

如果使用本地单元测试并对Android API有依赖,应该通过模拟框架(mocking framework)来替代它们,例如Mockito.

测试分布法则

我们应该把测试的关注点放在代码的业务逻辑上,下面几条是非常好的测试分布法则:

测试分布规则

应该至少在一个设备上测试应用,并尽可能的减少配置.另外也应该在具有最高可用配置(例如像素密度,屏幕分辨率)的设备上进行测试,以确保其在这些设备上正常工作.

Android测试工具支持

Google的Android测试支持库(ATSL)项目为Android测试提供了工具. 例如 AndroidJUnitRunner.

如果你运行本地单元测试,那么工具会创建一个特殊版本的android.jar (也被称为Android 模拟Jar包). 这个被修改后的 JAR 文件用来提供给单元测试,以便所有Android库中的字段,方法和类都可用. 在默认情况下,对Android可模拟JAR的任何调用都会导致异常,但是你可以将Android配置为返回默认值.当然最好的方式是使用一些Mock库,具体详情可以见Android Developer官方文档.

该库提供了JUnit兼容的测试运行器(AndroidJunitRunner)、Espresso测试框架和UI Automator 测试框架. Espresso测试框架可用于测试应用程序的用户界面,UI Automator 允许编写跨应用程序的功能测试.

AndroidJunitRunner 通过InstrumentationRegistery 提供了对 instrumentation API 的访问.

它还可以通过ActivityLifecycleMonitorRegistry访问生命周期.

Android工程测试结构

以下是你的应用和测试代码的默认目录结构:

遵循上述结构,Android的构建系统就会在相应的目标(JVM或者Android设备)运行测试.

解决"error duplicate files in path"的错误

如果你收到下面的错误:"error duplicate files in path. Path in archive: LICENSE.txt",你可以将以下内容添加到app/build.gradle文件中:

android {
    packagingOptions {
    exclude 'LICENSE.txt'
    }
}
敲行代码再睡觉
上一篇下一篇

猜你喜欢

热点阅读