Android - 单元测试

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

单元测试文件在哪里?

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

Android项目结构

其中:android

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

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

配置单元测试环境

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

<application
        .....
        <uses-library android:name="android.test.runner"/>
    </application>复制代码

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

<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开头。
编写完单元测试以后,就能够运行了。ui

运行单元测试

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

Run all tests

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

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

源代码地址:github.com/jjz/android…

相关文章
相关标签/搜索