打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
通过AndroidTestCase来进行android 单元测试 part I - Android开发 - 易水工作室

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

 

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

1.      添加自己的testcase code, 让他们继承自AndroidTestCase

2.      定义自己的testSuite类,用来管理test cases.

3.      定义自己的testRunner,用来执行测试

下面首先来看一下这种方法所涉及到的android的类以及接口。

AndroidTestCase

Android test cases classes需要从这个类派生出来,而不再是从junit.framework.TestCase.二者之间的最主要区别就是Androidtest cases提供了一个方法getContext()来获取当前的上下文变量,这在android测试中很重要的,因为很多的androidapi都需要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主要成员:

 VoidaddTest (Test test) //Adds a test to the suite.

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

下面是一小段往test suite中添加testcase的示例:

 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 (inpackagejunit.framework)

 

这是一个interface ,用来监听测试进程

有以下4PublicMethods:

abstractvoid addError(Test test,Throwable t)

Anerror occurred.

abstractvoid addFailure(Testtest,AssertionFailedError t)

Afailure occurred.

abstractvoid endTest(Test test)

Atest ended.

abstractvoid startTest(Testtest)

Atest started.

AndroidTestRunner

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

AndroidTestRunner主要方法:

SetTest();

runTest()

addTestListener()

setContext()

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

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

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

1.      写一个testcase:

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 );
    }
}

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
编译自动化, 静态分析, 单元测试,coredump调试,性能剖析
简单易懂的单元测试框架-gtest(二)
Python单元测试框架-UnitTest以及测试报告
在Android上实现Junit单元测试的四部曲
JUnit 4快速入门
应用JUnit实施单元测试
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服