如果想在android里面做单元测试,有两条基本的路子可行。

  第一, 就是java程序员最为熟悉和常用的JUnit, 但是由于目前android sdk (version 1.1)中只是提供了stubbed methods/classes,没有具体的实现代码,所以如果用JUnit的话,我们需要在运行单元测试时,一定要 用JDK来运行,利用java命令来启动JUnit的某个Runner。如果是用Eclipse的话,可以在Run Configuration里新建一个JUnit。但是一定要记得在Classpath选项卡里将Bootstrap Entries中的Android Library改成JRE,并且添加junit.jar。具体的设置可以参考:http://developer.android.com/guide/appendix/faq/troubleshooting.html#addjunit。 而且,更为遗憾的是,这种方法运行的JUnit运行在JDK之上的,而不是android,所以,只能测试一些和android无关的东西,比如业务逻辑,数据封装,数值计算等等。并不能测试android api。

  第二, 采用Instrumentation. Android单元测试的主入口是InstrumentationTestRunner。它相当于JUnit当中TestRunner的作用。你可以将Instrumentation理解为一种没有图形界面的,具有启动能力的,用于监控其他类(用Target Package声明)的工具类。任何想成为Instrumentation的类必须继承android.app.Instrumentation。

  下面通过一个实例来看一下如何通过Instrumentation来做单元测试。

  Step 1.首先编写需要测试的activity:

package com.android.ut;

import android.app.Activity;
import android.os.Bundle;

public class AndroidUT extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
    }
   
    public int add(int a, int b)
    {
        return a + b;
    }
}

  Step 2.

  接下来编写测试类,其中主要来测试add()方法。我们在当前代码目录下,在新建一个文件夹,命名为test,并在里面新建了包com.android.ut.test。然后往里面新增加一个class.具体如下:

package com.android.ut.test;

import com.android.ut.AndroidUT;

import android.test.ActivityInstrumentationTestCase;

public class TestApp extends ActivityInstrumentationTestCase<AndroidUT> {
   
    public TestApp()
    {
        super("com.android.ut", AndroidUT.class);
    }
   
    public void testSum()
    {
        assertEquals(5, getActivity().add(2, 3));
    }   
}

  Step 3.最后一步就是要改一下Manifest文件。

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
      package="com.android.ut"
      android:versionCode="1"
      android:versionName="1.0.0">
    <application android:icon="@drawable/icon" android:label="@string/app_name">
        <activity android:name=".AndroidUT"
                  android:label="@string/app_name">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    <uses-library android:name="android.test.runner" />
    </application>
    <instrumentation android:targetPackage="com.android.ut" android:name="android.test.InstrumentationTestRunner" android:label="Test Unit Tests"></instrumentation>
</manifest>

  需要注意的是,在这里面我加上了:

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

  以及:

  <instrumentation android:targetPackage="com.android.ut" android:name="android.test.InstrumentationTestRunner" android:label="Test Unit Tests"></instrumentation>

  Step 4.运行

  首先通过模拟器运行一下AndroidUT,然后在命令行终端中运行

  adb shell am instrument -e class com.android.ut.test.TestApp -wcom.android.ut/android.test.InstrumentationTestRunner

  这样你就可以看到测试结果了。

Android单元测试思路相关推荐

  1. Android单元测试框架Robolectric3.0介绍(二)

    文章中的所有代码在此:https://github.com/geniusmart/LoveUT ,由于 Robolectric 3.0 和 3.1 版本(包括后续3.x版本)差异不小,该工程中包含这两 ...

  2. android单元测试作用,Android单元测试源码解读

    Android手机操作系统是一个开源的操作系统.程序员们可以在模拟器的帮助下对其进行修改,来实现各种功能需求,满足用户的应用.在这里我们先来了解一下Android单元测试的相关内容. 在网络上找了半天 ...

  3. Android单元测试学习总结

    文章目录 一.本地单元测试 1. 创建测试类 2. Assert类中的常用断言方法 3. 运行测试类 4. 运行单个测试方法或多个测试类 二.Mockito测试框架的使用 1. Mock概念的理解 2 ...

  4. Android单元测试框架Robolectric3.0介绍(一)

    Android单元测试框架Robolectric3.0介绍(一) 作者 geniusmart 关注 2016.01.21 00:37* 字数 1550 阅读 18265评论 55喜欢 124赞赏 2 ...

  5. Android单元测试 > 整理分享

    Android单元测试 单元测试? What? 项目中为了测试某一个代码单元而写的测试代码:用于执行项目中的目标函数并验证其逻辑状态或者结果.这些代码是白盒测试,能够检测目标代码的准确性和可靠性,在打 ...

  6. Android单元测试全解

      自动化测试麻烦吗?说实在,麻烦!有一定的学习成本.但是,自动化测试有以下优点: 节省时间:可以指定测试某一个activity,不需要一个个自己点 单元测试:既然Java可以进行单元测试,Andro ...

  7. Android 单元测试学习计划

    网上查了一下Android单元测试相关的知识点,总结了一个学习步骤: 1. 什么是单元测试 2. 单元测试正反面: 2.1. 重要性 2.2. 缺陷 2.3. 策略 3. 单元测试的基础知识: 3.1 ...

  8. Android单元测试 - 几个重要问题

    前言 已经一个月没写文章了,由于9月份在plan国庆旅行计划,国庆前前后后去了14天旅行,所以没时间写,哈哈. 言归正传,上一篇文章<Android单元测试 - 如何开始?>介绍了几款单元 ...

  9. Android单元测试研究与实践

    处于高速迭代开发中的Android项目往往需要除黑盒测试外更加可靠的质量保障,这正是单元测试的用武之地.单元测试周期性对项目进行函数级别的测试,在良好的覆盖率下,能够持续维护代码逻辑,从而支持项目从容 ...

最新文章

  1. ns 25的IKE模式ipsec ***配置
  2. 如何放出Linux内核中的链表大招
  3. 面试真题:搜索旋转数组
  4. javascript提取标签之间的信息
  5. 易校网校园综合跑腿小程序源码修复运营版
  6. 惠普:计算机在非洲大有可为(zz)
  7. redux使用教程详细介绍
  8. rabbitmq可靠性投递_RabbitMQ可靠性
  9. 百度大脑 EasyDL 专业版最新上线自研超大规模视觉预训练模型
  10. 20多个Maven命令和选项(备忘单)
  11. 微信小程序-滚动消息通知
  12. 关于UIText换行
  13. C++11 关键字override和final
  14. Python 文本转语音
  15. pdf编辑器哪个好 怎么添加pdf文件水印
  16. ArrayList打印出来为什么会有空格
  17. python数据分析案例简单实战项目(二)--疫情数据分析
  18. g suite_什么是G Suite?
  19. Acrel-6000/B电气火灾监控系统麻城广场设计与应用
  20. 棋牌游戏代理:如何做好微信公众号的SEO?

热门文章

  1. android Web App开发
  2. 测试工程师应具备的素质
  3. VMware 搭建大数据测试平台(CDH6.2.1)
  4. shell 脚本中常见的 if [ $? -ne 0 ]; 意思
  5. 最小二乘拟合(矩阵)
  6. 2016年生物3D打印八大重要成果
  7. confluence 删除_Confluence 清理已经删除的页面(完全删除)
  8. 几种常见窗函数的特性
  9. 原生JS实现加载进度条
  10. SO-Net:点云分析的自组织网络