前言:为什么要进行单元测试?单元测试能快速是开发者,找到代码中的问题所在,因为是单元测试,所以代码只执行响应的测试单元,执行快解决问题的效率高,同时提高代码的质量。

    Android中的单元测试可简单分为两步:

    1.Manifast中注册:要注册三个部分。

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.xhm.testandroid"
android:versionCode="1"
android:versionName="1.0" > <uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="17" />
<!-- 单元测试的权限 -->
<uses-permission android:name="android.permission.RUN_INSTRUMENTATION" />
<!-- 单元测试的工具基类,测试类需要,其中的name和targetPackage是必须的,其他标签可选。targetPackage名要和package名相同,否者会报异常 -->
<instrumentation
android:name="android.test.InstrumentationTestRunner" android:targetPackage="com.xhm.testandroid" />
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" > <!-- 单元测试的工具包 -->
<uses-library android:name="android.test.runner" /> <activity
android:name="com.xhm.testandroid.MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>

2.测试工具类编写:

package com.xhm.testandroid;

import android.test.ActivityInstrumentationTestCase2;

/**
* 测试工具类编写 其中的MainActivity为要测试的类。
* 当选择Run As---->Android JUnit Test时,就是自动寻找这个类,
* 并一次调用测试方法,然后弹出JUnit界面
* @author Administrator
*
*/
public class BaseTest extends ActivityInstrumentationTestCase2<MainActivity> {
// 这个构造方法适用于SDK版本低的。super中参数1:被测试类的包名;super中参数2:被测试类的名字
public BaseTest() {
super("com.xhm.testandroid", MainActivity.class);
} // 这个构造方法适用于SDK版本高的。
public BaseTest(Class<MainActivity> activityClass) {
super(activityClass);
} // 测试方法随意取名,但必须为public,测试的时候建立的方法都会调用
public void testNull() {
// 获得MainActivity,这样就能调用其中的方法了
getActivity();
} public void testTest() {
assertEquals("Helloworld!", getActivity().testjia(1, 3).getText());
} }

3.程序测试截图:

  测试程序截图:

  测试结果截图:

其中的表示测试成功,即返回的结果和预想的一致。

其中的表示测试失败,即返回的结果和预想的不同。

4.注意:

    1)也许有人会问为什么运行测试的时候会自动去执行BaseTest这个方法,首先是因为他继承了ActivityInstrumentationTestCase2这个类,而在注册instrumentation时就是关键,你可以将Instrumentation理解为一种没有图形界面的,具有启动能力的,用于监控其他类(用Target Package声明)的工具类。

    2)在注册targetPackage时,一定要和项目的package一致,否则会出现问题,然后将测试类建立在targetPackage所指向的包路径下。

    3)在写测试工具类的时候,写了两个构造方法,因为发现在android低版本的SDK中,只有一个参数的构造方法不会调用,所以写了两个。

5.常用方法:

AndroidTestCase.getContext()://此函数的功能为得到Android系统的上下文对象,通过它可以取得contentResolver等对象。
ActivityInstrumentationTestCase.getActivity()//此函数的功能为得到被测Activity对象
assertTrue(String message,boolean condition)//声明状态是True
assertFalse(String message,boolean condition)//声明状态是False
assertEquals(String message,T expected,T expected)//声明两个对象相等
assertNotNull(String message,Object object)//声明对象不为空
assertNull(String message,Object object)//声明对象为空
fall(String message)//测试失败并附带一条消息

  所有的方法位于:junit.framework.Assert中,地址http://developer.android.com/reference/junit/framework/Assert.html

Android使用JUnit进行单元测试的更多相关文章

  1. Android之如何使用JUnit进行单元测试

    转的:http://www.blogjava.net/qileilove/archive/2014/05/19/413824.html Android中如何使用JUnit进行单元测试 在我们日常开发a ...

  2. Android中如何使用JUnit进行单元测试 eclipse

    Android中如何使用JUnit进行单元测试 在我们日常开发android app的时候,需要不断地进行测试,所以使用JUnit测试框架显得格外重要,学会JUnit可以加快应用的开发周期. Andr ...

  3. Android搭建junit测环境

    在AndroidManifest.xml文件中增加两个东西,分别是: 1.uses-library ,位于application里面. 2.instrumentation,与application同级 ...

  4. 无废话Android之android下junit测试框架配置、保存文件到手机内存、android下文件访问的权限、保存文件到SD卡、获取SD卡大小、使用SharedPreferences进行数据存储、使用Pull解析器操作XML文件、android下操作sqlite数据库和事务(2)

    1.android下junit测试框架配置 单元测试需要在手机中进行安装测试 (1).在清单文件中manifest节点下配置如下节点 <instrumentation android:name= ...

  5. Android(java)学习笔记165:Android的Junit调试

    编写android应用的时候,往往我们需要编写一些业务逻辑实现类,但是我们可能不能明确这个业务逻辑是否可以成功实现,特别是逻辑代码体十分巨大的时候,我们不可能一行一行检查自己的代码,为了解决这样的问题 ...

  6. 在Android Studio中进行单元测试和UI测试

    本篇教程翻译自Google I/O 2015中关于测试的codelab,掌握科学上网的同学请点击这里阅读:Unit and UI Testing in Android Studio.能力有限,如有翻译 ...

  7. Android(java)学习笔记108:Android的Junit调试

    1. Android的Junit调试: 编写android应用的时候,往往我们需要编写一些业务逻辑实现类,但是我们可能不能明确这个业务逻辑是否可以成功实现,特别是逻辑代码体十分巨大的时候,我们不可能一 ...

  8. [Android]Android MVP&依赖注入&单元测试

    以下内容为原创,欢迎转载,转载请注明 来自天天博客:http://www.cnblogs.com/tiantianbyconan/p/5422443.html Android MVP&依赖注入 ...

  9. java如何使用JUnit进行单元测试

    注:所有内容都是在eclipse上实现,关于eclipse的安装和jdk的安装配置,请看:http://www.cnblogs.com/fench/p/5914827.html 单元测试是什么? 百度 ...

随机推荐

  1. What is a fully qualified domain name (FQDN)?

    fully qualified domain name (FQDN) is the complete domain name for a specific computer, or host, on ...

  2. 三种Web前端框架比较与介绍--Vue, react, angular

    一.Angular 1.MVVM(Model)(View)(View-model): 2.模块化(Module)控制器(Contoller)依赖注入: 3.双向数据绑定:界面的操作能实时反映到数据,数 ...

  3. hdu4001

    参考博客http://www.cppblog.com/aswmtjdsj/archive/2011/09/04/155049.aspx 维护4根双扫描线,左右和上下.暴力枚举,复杂度O(n^2). # ...

  4. ylbtech_dbs_article_五大主流数据库模型

    ylbtech_dbs_article 摘要:什么是数据模型? 访问数据库中的数据取决于数据库实现的数据模型.数据模型会影响客户端通过API对数据的操作.不同的数据模型可能会提供或多或少的功能.一般而 ...

  5. 在c++代码中执行bat文件 【转】

    我想在c++代码中执行磁盘上的一个bat文件. 这个bat文件的完整路径是:E:\\7z\\my7z.bat. 方法一: system("E:\\7z\\my7z.bat"); s ...

  6. C++ 如何得到当前进程所占用的内存呢?【转】

    使用SDK的PSAPI (Process Status Helper)中的BOOL GetProcessMemoryInfo( HANDLE Process, PPROCESS_MEMORY_COUN ...

  7. 设置textField的placegolder的字体大小和字体颜色

           由于项目的主题颜色为灰黑色,所以当使用textField的时候,placeholder内的字体默认是灰色,当程序执行的时候,差点儿看不到.        翻来翻去找到一种比較简单地方法, ...

  8. 【转】docker安装PostgreSQL

    原文:https://blog.csdn.net/liuyueyi1995/article/details/61204205 你先确认这两件事:1)执行 docker exec -it dream.p ...

  9. 关于批量插入数据之我见(100万级别的数据,mysql)

    因前段时间去面试,问到怎样高效向数据库插入10万条记录,之前没处理过类似问题.也没看过相关资料,结果没答上来,今天就查了些资料.总结出三种方法: 測试数据库为mysql!!! 方法一: public ...

  10. 《Java程序猿面试笔试宝典》之volatile有什么作用

    在由Java语言编写的程序中.有时候为了提高程序的执行效率,编译器会自己主动对其进行优化,把经常被訪问的变量缓存起来,程序在读取这个变量的时候有可能会直接从缓存(比如寄存器)中来读取这个值.而不会去内 ...