Android-单元测试

Android的单元测试有两种方式:本地单元测试设备单元测试本地单元测试可以直接运行在本地机器上面的Java Virtual Machine(JVM)。它的特点是运行时间短,执行效率高,但是没有Android framework的支持,每个文件都可以进行单独的单元测试。
而在Android设备上的单元测试,运行的是一个单独的APK,直接运行到虚拟机或者物理Android设备上,这种单元测试拥有整个App的生命周期和运行环境。
这里主要介绍以运行在Android设备上的单元测试为主。

单元测试文件在哪里?

首先先看下单元测试文件是什么位置,下面是一个Android项目的基本结构:


Android项目结构

其中:

  • ../app/src/test/java目录下是本地单元测试的文件目录。
  • ../app/src/androidTest/java目录下就是设备单元测试的文件目录。

知道了单元测试文件的目录,下面就看下如何配置单元测试环境。

配置单元测试环境

需要使用单元测试,需要引入单元测试的依赖库,在AndroidManifest.xml里面添加uses-library

    <application
        .....
        <uses-library android:name="android.test.runner"/>
    </application>

然后再配置单元测试框架的启动项:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.jjz">

      <instrumentation android:name="android.test.InstrumentationTestRunner"
        android:targetPackage="com.jjz"
        android:label="test"/>

</manifest>
  • android.test.InstrumentationTestRunner:是Android单元测试其中的一个启动项,用来启动单元测试。
  • com.android.test.runner.MultiDexTestRunner:是另一个单元测试的启动项用来启动MultiDex的项目。

这里设置了android:targetPackage与项目的package相同,这样当前单元测试和应用程序会运行在同一个进程里面。
环境配置完成之后,就可以编写单元测试的代码了?

编写单元测试

为了使用单元测试方便,先在项目中增加一个方法,该方法用来比较两个字符串的是否相等:

public class StringUtil {
    public static boolean compare(String source, String other) {
        if (source == null) {
            return other == null;
        } else {
            return source.equals(other);
        }

    }
}

在对方法compare进行单元测试,在../app/src/androidTest/java/com.jjz添加文件StringUtilTest.java,文件内容为:

public class StringUtilTest extends AndroidTestCase {
    public void testCompare() {
        Assert.assertFalse(StringUtil.compare(null,"123"));
        Assert.assertTrue(StringUtil.compare("123","123"));
    }
}

需要注意的是类名必须使用Test结尾,并且要继承AndroidTestCase,而单方法必须使用test开头。
编写完单元测试之后,就可以运行了。

运行单元测试

../app/androidTest/java文件夹上面,可以看到运行单元测试的按钮,如图所示:

Run all tests

直接点击Run all tests,可以看到单元测试的结果:
测试结果

这样就完成了一个简单的单元测试。

源代码地址:https://github.com/jjz/android/tree/master/experimental

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 176,095评论 25 709
  • Android单元测试介绍 处于高速迭代开发中的Android项目往往需要除黑盒测试外更加可靠的质量保障,这正是单...
    东经315度阅读 8,593评论 6 37
  • @Author:彭海波 前言 单元测试(又称为模块测试, Unit Testing)是针对程序模块(软件设计的最小...
    海波笔记阅读 10,423评论 0 52
  • 真正理解这两个字是四十五岁的父亲从建造的庙亭上摔下来回家提及此事所省略的绝望和喊不出一声救命的细节 《却》想要一个...
    南方小余阅读 1,342评论 2 6
  • 2015-12-24 ㈠做的有价值的事情 ①背英语单词,晨跑 ②VFP课程(第三章) ③看视频《大众理财》 ④普通...
    tang小米阅读 4,204评论 102 5

友情链接更多精彩内容