通過AndroidTestCase來進行android 單元測試

來源:互聯網
上載者:User

介紹過了如何用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主要成員:

 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 ,用來監聽測試進程

有以下4個Public 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, 甚至來一個基於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 );
    }
}

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.