通过AndroidTestCase来进行android 单元测试 part I
来源:互联网 发布:nginx需要密码访问 编辑:程序博客网 时间:2024/06/01 09:42
From:http://blog.chinaunix.net/uid-20355083-id-1963987.html
在以前的博客中介绍过了如何用intrumentation进行android单元测试,其实还有一种方法同样可以,那就是利用AndroidTestCase来做单元测试,intrumentationTestCase和AndroidTestCase都是Junit.framwork.TestCase的子类,二者代表不用的方向。
如果想通过AndroidTestCase,大致可以通过以下几个步骤实现:
1. 添加自己的test case code, 让他们继承自AndroidTestCase。
2. 定义自己的testSuite类,用来管理test cases.
3. 定义自己的testRunner,用来执行测试
下面首先来看一下这种方法所涉及到的android的类以及接口。
AndroidTestCase
Android test cases classes需要从这个类派生出来,而不再是从junit.framework.TestCase. 二者之间的最主要区别就是Android test cases提供了一个方法getContext()来获取当前的上下文变量,这在android测试中很重要的,因为很多的android api都需要context。
AndroidTestCase主要成员:
setUp() //Sets up the fixture, for example, open a network connection.
tearDown() //Tears down the fixture, for example, close a network connection.
testAndroidTestCaseSetupProperly()
TestSuite (in package junit.package)
一个TestSuite
就是一系列
test case
的集合。通过
testsuite
可以更好的来管理
test case
TestSuite主要成员:
下面是一小段往test suite中添加test case的示例:
TestSuite suite= new TestSuite();
suite.addTest(new MathTest("testAdd")); //Adds a test to the suite.
suite.addTest(new MathTest("testDivideByZero"));
或者可以通过addTestSuite()来添加:
suite.addTestSuite(MathTest.class);
TestListener (in package junit.framework)
这是一个 interface ,用来监听测试进程
有以下4个Public Methods
abstract void
An error occurred.
A failure occurred.
A test ended.
A test started.
AndroidTestRunner
继承自class junit.runner.BaseTestRunner,但是它没有提供ui, 甚至来一个基于console的UI都没有,所以,如果想要很好的查看测试结果的话,你需要自己来处理来自于test runner的callback 函数。一会可以通过例子演示一下
AndroidTestRunner主要方法:
SetTest();
runTest()
addTestListener()
setContext()
如果要使用AndroidTestRunner,需要在permission in manifest.xml中添加权限:
<uses-library android:name="android.test.runner" />
最后,通过一个实例来演示一下:
1. 写一个test case:
MathTest.java
package com.ut.prac;
import android.test.AndroidTestCase;
import android.util.Log;
public class MathTest extends AndroidTestCase {
protected int i1;
protected int i2;
static final String LOG_TAG = "MathTest";
public void setUp() {
i1 = 2;
i2 = 3;
}
public void testAdd() {
Log.d( LOG_TAG, "testAdd" );
assertTrue( LOG_TAG+"1", ( ( i1 + i2 ) == 5 ) );
}
public void testAndroidTestCaseSetupProperly() {
super.testAndroidTestCaseSetupProperly();
Log.d( LOG_TAG, "testAndroidTestCaseSetupProperly" );
}
}
2. 定义一个test suite类。
ExampleSuite.java
package com.ut.prac;
import junit.framework.TestSuite;
public class ExampleSuite extends TestSuite {
public ExampleSuite() {
addTestSuite( MathTest.class );
}
}
- 通过AndroidTestCase来进行android 单元测试 part I
- 通过AndroidTestCase来进行android 单元测试 part II
- 通过AndroidTestCase来进行android 单元测试
- 通过AndroidTestCase来进行android 单元测试
- 通过AndroidTestCase来进行android 单元测试
- 通过AndroidTestCase来进行android 单元测试
- AndroidTestCase来进行android 单元测试简介
- AndroidTestCase来进行android 单元测试简介
- AndroidTestCase来进行android 单元测试简介
- android 怎么进行调试程序 如何采用AndroidTestCase进行单元测试
- android单元测试AndroidTestCase
- Android sqlite 单元测试AndroidTestCase
- android单元测试AndroidTestCase
- 利用AndroidTestCase来做单元测试
- Android 中的单元测试(使用AndroidTestCase 进行 Content Provider 测试)
- [android篇]单元测试之AndroidTestCase
- Android 单元测试——AndroidTestCase
- Android[中级教程]第四章 单元测试AndroidTestCase
- 从svn上更新下来的代码报错
- C语言位运算符:与、或、异或、取反、左移和右移
- 使用Intent实现活动间的跳转和数据传递
- 枚举的作用
- lucene_indexWriter说明、索引库优化
- 通过AndroidTestCase来进行android 单元测试 part I
- Maximum Depth of Binary Tree
- android基本架构
- 感悟:Java的多线程跟Java的类系统之间的关系
- 01背包问题
- java 多线程--概要
- 每天laravel-20160620|MemcachedConnector
- 码农小汪-剑指Offer之12 -链表中倒数第k个结点
- python学习的一些小技巧小结