`
zhouxiaoli521
  • 浏览: 553472 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

通过AndroidTestCase来进行android 单元测试 part I

阅读更多

以前的博客中介绍过了如何用intrumentation进行android单元测试,其实还有一种方法同样可以,那就是利用AndroidTestCase来做单元测试,intrumentationTestCaseAndroidTestCase都是Junit.framwork.TestCase的子类,二者代表不用的方向。

 

如果想通过AndroidTestCase,大致可以通过以下几个步骤实现:

<!--[if !supportLists]-->1.       添加自己的test case code, 让他们继承自AndroidTestCase<!--[endif]-->

<!--[if !supportLists]-->2.       定义自己的testSuite类,用来管理test cases.<!--[endif]-->

<!--[if !supportLists]-->3.       定义自己的testRunner,用来执行测试<!--[endif]-->

下面首先来看一下这种方法所涉及到的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主要成员:

 Void addTest (Test test) //Adds a test to the suite.

void addTestSuite(Class testClass) //Adds the tests from the given class to the suite

下面是一小段往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 ,用来监听测试进程

有以下4Public Methods :

abstract void addError(Test test,Throwable t)

An error occurred.

abstract void addFailure(Test test,AssertionFailedError t)

A failure occurred.

abstract void endTest(Test test)

A test ended.

abstract void startTest(Test test)

A test started.

AndroidTestRunner

继承自class junit.runner.BaseTestRunner,但是它没有提供ui, 甚至来一个基于consoleUI都没有,所以,如果想要很好的查看测试结果的话,你需要自己来处理来自于test runnercallback 函数。一会可以通过例子演示一下

AndroidTestRunner主要方法:

SetTest();

runTest()

addTestListener()

setContext()

如果要使用AndroidTestRunner,需要permission in manifest.xml中添加权限:

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

最后,通过一个实例来演示一下:

<!--[if !supportLists]-->1.       写一个test case:<!--[endif]-->

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类。<!--[endif]-->

ExampleSuite.java



package com.ut.prac;

import junit.framework.TestSuite;

public class ExampleSuite extends TestSuite {
    public ExampleSuite() {
        addTestSuite( MathTest.class );
    }
}
 

 

分享到:
评论

相关推荐

    Android[中级教程]第四章_单元测试AndroidTestCase.doc

    Android[中级教程]第四章_单元测试AndroidTestCase.doc

    Android review AndroidTestCase

    Android review AndroidTestCase

    AndroidJunit单元测试4部曲

    我们曾经和大家探讨过全面剖析JavaME单元测试理念,其实在Android上...  第一步:新建一个TestCase,记得要继承androidTestCase,才能有getContext()来获取当前的上下文变量,这在Android测试中很重要的,因为很多的

    Android中使用AndroidTestCase的方法实例

    主要介绍了Android中使用AndroidTestCase的方法实例,本文直接给出实现代码,需要的朋友可以参考下

    androidtestcase

    androidtestcase的小例子程序,希望对需要的人有所帮助。

    android之Junit 深入研究代码

    android之Junit 深入研究的工程代码,为我们更好的理解如何来使用androidTestCase进行单元测试开发提供了方便。

    android-test-2.3.1.jar

    一个库jar,提供用于测试为Google Android平台编写的应用程序的API。 com.google.android/android-test/2.3.1/android-test-2.3.1.jar

    Android_Weather:个人Android应用项目

    Android_天气 Udacity提供的“个人Android应用程序项目”。...使用AndroidTestCase进行数据库测试 内容提供商 游标加载器 更新的用户界面 在更大的屏幕上支持多窗格 通知支持+开/关首选项 屏幕截图:

    Android–SQLite(增,删,改,查)操作实例代码

    需要5个类: 1.实体类:Person.java ...5.测试类:Test.java(继承AndroidTestCase) 1.Person.java 代码如下:package com.mrzhu.sqltite; public class Person { private int _id; private String name; public

    AndroidAdvancedPractice

    使用不同的模块,我们可以使用不同的测试套件(用于纯Java代码的JUnit,用于Android代码的AndroidTestCase) 模块API src |- main |- |- test: contains all unit tests for this module |- java: code for Unit...

Global site tag (gtag.js) - Google Analytics