`
zhouxiaoli521
  • 浏览: 561637 次
  • 性别: 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 review AndroidTestCase

    这些测试类运行在Android设备或模拟器上,通过Instrumentation进程来控制目标应用,从而能够进行实际的设备交互,例如触摸屏幕、接收广播等。 在`AndroidTestCase`中,你可以使用`setUp()`和`tearDown()`方法来准备...

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

    下面我们将通过一个具体的例子来详细了解如何利用`AndroidTestCase`来进行单元测试。 ##### 1. 数据库辅助类`DatabaseHelper` ```java import android.content.Context; import android.database.sqlite....

    androidtestcase

    "androidtestcase"是一个专门针对Android应用的测试用例集合,旨在帮助开发者进行有效的功能验证和错误排查。在这个小例子程序中,我们可以学习到如何构建和执行Android的单元测试以及UI测试。 首先,Android测试...

    Android添加单元测试的方法与步骤

    2. **创建测试类**:在要进行单元测试的方法上右键点击`NEW -&gt; JUnit Test Case`,然后根据提示选择合适的测试超类(通常是`android.test.AndroidTestCase`或`android.test.InstrumentationTestCase`),并选择要...

    CMDN CLUB # 17期:Android开发的单元测试

    标题和描述均提到了"CMDN CLUB # 17期:Android开发的单元测试",这一主题聚焦于Android开发中的单元测试实践。单元测试是一种软件工程中的自动化测试方法,其目的是验证软件模块(通常是单一功能)是否按照预期工作...

    Android中使用AndroidTestCase的方法实例

    在Android开发中,进行应用程序测试是非常重要的...通过以上步骤,你可以在Android项目中有效地使用`AndroidTestCase`进行单元测试,确保代码质量并快速定位问题。记得根据实际情况调整测试代码,以适应你的应用需求。

    Android测试,日志

    本章节将详细介绍Android测试的基础知识,包括不同类型的测试以及如何利用JUnit进行单元测试。 #### 二、常见测试分类 在Android开发过程中,测试可以根据不同的标准进行分类: ##### 1. 根据是否知道源程序源码...

    单元测试.docx

    Junit 提供了测试驱动和测试用例的功能,开发者可以通过引入“android.test.ActivityInstrumentationTestCase2”包来使用这些功能。 Junit 的测试用例原型有很多,例如“android.test.AndroidTestCase”。开发者...

    单元测试手机UI界面

    单元测试是对软件中的最小可测试单元进行检查和验证,对于移动应用来说,这个单元可能是单个的函数、方法或者是一个组件。在Android中,我们可以使用JUnit框架来编写单元测试,它是Java领域最广泛使用的单元测试库。...

    android之Junit 深入研究代码

    在Android项目中,我们可以利用Android Studio内置的JUnit支持来进行单元测试。首先,我们需要在`build.gradle`文件中添加测试相关的依赖,例如: ```groovy android { testImplementation 'junit:junit:4.12' ...

    android之Junit ActivityUnitTestCase 演示

    `JUnit`是Java领域广泛使用的单元测试框架,而在Android环境中,我们需要结合特定的Android测试类来对应用程序进行测试,其中之一就是`ActivityUnitTestCase`。本篇文章将深入探讨如何使用`JUnit`和`...

    Android学习笔记之应用单元测试实例分析

    在Android中,通常使用JUnit框架进行单元测试,但需要扩展`AndroidTestCase`类来利用Android的测试环境。创建一个名为`PersonServiceTest`的测试类,继承自`AndroidTestCase`。在这个类中,我们可以为`PersonService...

    Android测试框架介绍.doc

    总结来说,Android测试框架是一个强大且灵活的工具,支持多种测试类型,包括单元测试和组件测试。通过JUnit、Instrumentation和Mock对象,开发者可以深入测试应用的每个角落,确保其在各种场景下的表现。同时,...

    android中文SDK 测试基本原理.doc

    总的来说,Android的测试基本原理涉及从单元测试到端到端测试的全面覆盖,利用JUnit和Android特定的测试类,结合Instrumentation和模拟对象,确保应用程序在各个层面的正确性。通过合理的项目结构、API扩展以及各种...

Global site tag (gtag.js) - Google Analytics