如果你的单元测试在Android中没有依赖或者只有简单的以来,你可以在你的本地开发环境中运行你的测试。这种测试比较高效因为它能让你避免将整个app安装到物理设备或虚拟机中执行单元测试。最后,执行单元测试的时间大量减少。你可以通过模拟框架,比如Mockito来模拟依赖关系。

配置你的测试环境

前文已经叙述。

创建一个本地单元类

你的本地测试单元类风格类似Junit 4测试类。Junit是Java最流行应用最广泛的单元测试类。最新的版本,Junit 4,允许你用比之前版本更简洁和灵活的方式编写测试。跟之前的版本不同,在Junit 4中,你不需要扩展junit.framework.TestCase类了。你也不需要在每个测试方法前加前缀test或者使用在junit.framework 或 junit.extensions中的包。

创建一个基本的Junit 4 测试类,你可以创建一个包含一个或多个测试方法的Java类。每个测试方法都用@Test 标注。如下:

import org.junit.Test;
import java.util.regex.Pattern;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue; public class EmailValidatorTest { @Test
public void emailValidator_CorrectEmailSimple_ReturnsTrue() {
assertThat(EmailValidator.isValidEmail("name@email.com"), is(true));
}
}

为了测试你的APP组件返回期望的记过,使用Assert方法来执行检查。

模拟Android 依赖

默认情况下,Gradle的安卓插件依靠一个经过修改的android.jar的库,不包含任何真正的代码,调用的任何的Android的类都被视为异常。

你可以使用一个模拟框架来排除你代码中额外的依赖,让你的组件通过期望的方式与依赖交互。

添加一个虚拟对象到你的本地单元测试,跟随如下几步:

1、 将Mockito依赖添加到build.gradle文件中

2、 在你的测试类前添加@RunWith(MockitoJUnitRunner.class)注解。

3、 创建一个mock对象,用@Mock注解

import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.CoreMatchers.*;
import static org.mockito.Mockito.*;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mock;
import org.mockito.runners.MockitoJUnitRunner;
import android.content.SharedPreferences; @RunWith(MockitoJUnitRunner.class)
public class UnitTestSample { private static final String FAKE_STRING = "HELLO WORLD"; @Mock
Context mMockContext; @Test
public void readStringFromContext_LocalizedString() {
when(mMockContext.getString(R.string.hello_word))
.thenReturn(FAKE_STRING);
ClassUnderTest myObjectUnderTest = new ClassUnderTest(mMockContext);
String result = myObjectUnderTest.getHelloWorldString();
assertThat(result, is(FAKE_STRING));
}
}

本文作者:宋志辉

个人微博:点击进入

2、Android构建本地单元测试的更多相关文章

  1. Android测试(三):本地单元测试

    原文:https://developer.android.com/training/testing/unit-testing/local-unit-tests.html 如果你的单元测试没有依赖或者只 ...

  2. 在Android中进行单元测试遇到的问题

    问题1.Cannot connect to VM  socket closed 在使用JUnit进行测试的时候,遇到这个问题.网上的解释是:使用Eclipse对Java代码进行调试,无论是远程JVM还 ...

  3. 关于Android 构建

    在简书上面有系列关于Android 的文章,还不错,部分同学可以在开发过程中阅读和学习:www.jianshu.com/collection/3fde3b545a35 关于Android 构建,看到这 ...

  4. 3、Android构建仪表测试

    不同于运行于JVM的本地单元测试,仪表测试运行于你的物理设备或虚拟机中.当你需要访问设备的信息(比如Context)或者使用真正的Android framework组件时(比如SharePrefere ...

  5. 一些基本的操作,编译,构建,单元测试,安装,网站生成和基于Maven部署项目。

    一些基本的操作,编译,构建,单元测试,安装,网站生成和基于Maven部署项目. 使用Maven构建项目“mvn package” 来构建项目 使用Maven清理项目“mvn clean” 来清理项目 ...

  6. 利用node构建本地服务

    利用node构建本地服务 首先安装下node.js,地址为https://nodejs.org/en/,然后安装npm. node.js的中文api地址http://nodeapi.ucdok.com ...

  7. Android清除本地数据缓存代码案例

    Android清除本地数据缓存代码案例 直接上代码: /*  * 文 件 名:  DataCleanManager.java  * 描    述:  主要功能有清除内/外缓存,清除数据库,清除shar ...

  8. Jenkins构建本地项目到服务器上自动部署的方法

    博主原创,转载请注明. 最近在用Jenkins做项目的自动部署,由于项目需求,现在要在本地构建后再放到Tomcat里.以下是本地构建步骤: 名称填写好,下面的选项是可选的. 源码管理这里选择none. ...

  9. webpack构建本地服务器

    webpack构建本地服务器 想不想让你的浏览器监测你的代码的修改,并自动刷新修改后的结果,其实Webpack提供一个可选的本地开发服务器,这个本地服务器基于node.js构建, 可以实现你想要的这些 ...

随机推荐

  1. bzoj4514

    4514: [Sdoi2016]数字配对 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 1870  Solved: 712[Submit][Statu ...

  2. SpringBoot学习之集成mybatis

    一.spring boot集成Mybatis gradle配置: //gradle配置: compile("org.springframework.boot:spring-boot-star ...

  3. Linux之软链接与硬链接

    什么是链接? 链接简单说实际上是一种文件共享的方式,是 POSIX 中的概念,主流文件系统都支持链接文件. 它是用来干什么的? 你可以将链接简单地理解为 Windows 中常见的快捷方式(或是 OS ...

  4. C语言程序设计第五次作业——循环结构(1)

    一.改错题 1.题目 输出华氏摄氏温度转换表:输入两个整数lower和upper,输出一张华氏摄氏温度转换表,华氏温度的取值范围是{lower,upper},每次增加2℉.计算公式如下:c = 5×( ...

  5. jquery 元素控制(追加元素/追加内容)介绍及应用

    http://blog.csdn.net/gisredevelopment/article/details/41126533 一.在元素内部/外部追加元素 append,prepend:添加到子元素  ...

  6. Mysql--开篇&目录

    Mysql 现在是互联网公司中使用得非常广泛的数据库产品了,开源.免费.小巧.易用等诸多特性奠定了其夯实的基础.自己从事 JavaWeb 也有一段时间了,工作中也是用的 Mysql,也会涉及到分析.慢 ...

  7. jieba库分词统计

    代码在github网站,https://github.com/chaigee/chaigee,中的z3.py文件 py.txt为团队中文简介文件 代码运行后词频统计使用xlwt库将数据发送到excel ...

  8. CMD远程连接服务器上的MySQL

    1.打开CMD命令行. 2.输入mysql -h要远程的IP地址 -u设置的MySQL用户名 -p登录用户密码 例如:mysql -h192.168.0.110 -uroot -p1233 (如果不能 ...

  9. Spring boot集成swagger2

    一.Swagger2是什么? Swagger 是一款RESTFUL接口的文档在线自动生成+功能测试功能软件. Swagger 是一个规范和完整的框架,用于生成.描述.调用和可视化 RESTful 风格 ...

  10. thinkphp零碎小知识

    在使用thinkphp搭建后台的时候,有很多的参数需要去配置,有的记不住还要去查找,这里把一些基本的参数整理一下,还有些零碎的知识点,与大家共勉,希望能方便大家. 友情提示:这些配置是 thinkph ...