Android单元测试

标签: android 单元测试 | 发表时间:2013-09-09 18:56 | 作者:deng0zhaotai
出处:http://blog.csdn.net

    单元测试不管对于初学编程还是已经工作了很久的开发者来说,都不乐意花时间去写认为没用的代码进行测试,只要交给测试人员就行了,虽然这样也能把软件改出来,但也许你要花上几倍的时间去修改问题,如果在开发的过程中花点时间去写单元测试代码,把尽可能出问题的地方都测试一遍,把问题扼杀在最开始的地方,这样你就不必为后来找问题出处而烦恼。当代码工程越大越需要单元测试。

在Android中添加单元测试需要在AndroidMainfest.xml文件中添加测试库,代码如下

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.testcase"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="17" />

    <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.example.testcase.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>

    <!-- 
    android:name:测试类名
    android:targetPackage:测试程序所在的包名
    android:label:测试类标题
     -->
    <instrumentation android:name="android.test.InstrumentationTestRunner"
  android:targetPackage="com.example.testcase" android:label="Tests for My App" />
    
</manifest>


需要被测试的类

package com.example.testcase;

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

public class MainActivity extends Activity {

	int sum = 100;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);
	}

	public int add(int x, int y) {
		return (x + y);
	}

	public int dec(int x, int y) {
		return (x - y);
	}

	public int mul(int x, int y) {
		return (x * y);
	}

	public float div(int x, int y) {
		return (x / y);
	}
}

接下来就要编写一个类来测试上面的函数,这个类需要继承AndroidTestCase

Test.java

package com.example.testcase;

import android.test.AndroidTestCase;

public class Test extends AndroidTestCase {
	
	MainActivity app = new MainActivity();
	public void testAdd() {
		System.out.println(app.add(20, 3));
	}

	public void testDec() {
		System.out.println(app.dec(20, 3));
	}

	public void testMul() {
		System.out.println(app.mul(20, 3));
	}

	public void testDiv() {
		System.out.println(app.div(20, 0));
	}
}

在OutLine就会出现单元测试的几个函数


在对应的函数上右键会出现



选择"Android JUnit Test"就进行测试,如果成功会出现如下界面:



如果失败出现如下界面:


这时我们找错误只关注当前这个函数就行了,如果程序程序复杂度相当大,那么通过单元测试我们可以把问题一步步细化。



作者:deng0zhaotai 发表于2013-9-9 18:56:32 原文链接
阅读:17 评论:0 查看评论

相关 [android 单元测试] 推荐:

Android单元测试

- - CSDN博客推荐文章
    单元测试不管对于初学编程还是已经工作了很久的开发者来说,都不乐意花时间去写认为没用的代码进行测试,只要交给测试人员就行了,虽然这样也能把软件改出来,但也许你要花上几倍的时间去修改问题,如果在开发的过程中花点时间去写单元测试代码,把尽可能出问题的地方都测试一遍,把问题扼杀在最开始的地方,这样你就不必为后来找问题出处而烦恼.

文章: Android中的单元测试

- - InfoQ cn
随着Agile的普及,以及开发人员对测试重要性的认识逐步加深,单元测试已经成了越来越多软件项目开发中不可缺少的一部分. 无论项目是不是采用TDD的形式来进行开发,单元测试都能够为项目的修改和重构提供一定的保障. 有奖参与:天翼伦敦会,上传应用,为中国队加油. QClub七月技术沙龙(太原/北京/上海/厦门/西安 7月21/28/29日 免费报名中.

Android单元测试研究与实践

- - 美团点评技术团队
处于高速迭代开发中的Android项目往往需要除黑盒测试外更加可靠的质量保障,这正是单元测试的用武之地. 单元测试周期性对项目进行函数级别的测试,在良好的覆盖率下,能够持续维护代码逻辑,从而支持项目从容应对快速的版本更新. 单元测试是参与项目开发的工程师在项目代码之外建立的白盒测试工程,用于执行项目中的目标函数并验证其状态或者结果,其中,单元指的是测试的最小模块,通常指函数.

Android单元测试与模拟测试

- - 神刀安全网
考虑可读性,对于方法名使用表达能力强的方法名,对于测试范式可以考虑使用一种规范, 如 RSpec-style. 不要使用逻辑流关键字(If/ese、for、do/while、switch/case),在一个测试方法中,如果需要有这些,拆分到单独的每个测试方法里. 测试真正需要测试的内容,需要覆盖的情况,一般情况只考虑验证输出(如某操作后,显示什么,值是什么).

Android公共库选型 单元测试 依赖管理等调研

- - Trinea
抱歉,最近一个多月一直比较忙,博客许久未更新. 后续更新周期会慢一些,不过依旧会陆续分享一些原创. 最近在调研一些事情,欢迎大家留言告诉我自己公司的一些情况、经验及想法. 测试辅助框架选型,Quality Tools for Android, android-test-kit, robolectric, Android FEST指标同上.

Hadoop之MapReduce单元测试

- - ITeye博客
通常情况下,我们需要用小数据集来单元测试我们写好的map函数和reduce函数. 而一般我们可以使用Mockito框架来模拟OutputCollector对象(Hadoop版本号小于0.20.0)和Context对象(大于等于0.20.0). 下面是一个简单的WordCount例子:(使用的是新API).

迈出单元测试的第一步

- - 酷勤网-挖经验 [expanded by feedex.net]
单元测试不仅是软件行业的最佳实践,在敏捷方法的推动下,它也成为了可持续软件生产的支柱. 年度敏捷调查,70%的参与者会对他们的代码进行单元测试. 单元测试和其他敏捷实践密切相关,所以开始编写测试是组织向敏捷转型的踏脚石. 我将在本文介绍符合要求的小技巧,以及在开发周期里进行单元测试的步骤. 没有自动化,单元测试的习惯也不会持续太久.

“单元测试要做多细?”

- - 酷壳 - CoolShell.cn
这篇文章主要来源是StackOverflow上的一个回答——“ How deep are your unit tests?”. 一个有13.8K的分的人( John Nolan)问了个关于TDD的问题,他说——. “TDD需要花时间写测试,而我们一般多少会写一些代码,而第一个测试是测试我的构造函数有没有把这个类的变量都设置对了,这会不会太过分了.

Java 单元测试利器之 Junit

- - 博客园_首页
          因为工作和学习的需要,在代码中查错的时候,第一步就是想知道这个错误具体发生在一个位置,进行一个准确的定位. 而这个定位的工作交给谁来做了呢. 不难猜出也就是这篇博客的主题---Junit. junit是一个开源的框架,也是java这一块的测试工具之一. 想了解详细请上官网,下面用代码来跟大家解释.

iOS开发进阶之单元测试

- - 博客园_首页
本文侧重讲述如何在iOS程序的开发过程中使用单元测试. 使用Xcode自带的OCUnit作为测试框架. 单元测试作为敏捷开发实践的组成之一,其目的是提高软件开发的效率,维持代码的健康性. 其目标是证明软件能够正常运行,而不是发现bug(发现bug这一目的与开发成本是正相关的,虽然发现bug是保证软件质量的一种手段,但是很显然这与降低软件开发成本这一目的背道而驰).