2010年11月20日 星期六

Android、JUnit深入淺出(三)—JUnit深入解析(下)

Android、JUnit深入淺出(三)—JUnit深入解析(下)

前面我們學習了junit.framework包,本篇幅我們開始學習android.test包,了解Android SDK是如何擴展junit.framework包。
首先整理android.test包的結構,如下圖所示:




在前面的篇幅中說明過:TestCase與TestSuite之間的關係,有些類似於圖元對象與容器對象之間的關係。 有了這個思想,順著這張的主線圖從上往下看:首先看到的是TestCase類,接著看到InstrumentationTestCase、AndroidTestCase,最後看到ApplicationTestCase,ProviderTestCase2,ServiceTestCase,ActivityTestCase。 這不就是Android 系統中4大組成元素:Activity、Provider、Service、BroadCast中的前3個,然後我們在看下Android SDK中的說明:類說明


這些類就不在這裡說明,應該與我們平時使用Activity、Service、Provider基本一樣。 下面舉個例子,來說明如何使用這些類,我們就將上一篇J2SE測試例子,在Android中實現:

//MathTest.java
import android.test.AndroidTestCase;
import android.util.Log;
public class MathTest extends AndroidTestCase
{
protected double fValue1;
protected double fValue2;
protected double fRe;
static final String LOG_TAG = “MathTest”;
protected void setUp() {
fValue1= 2.0;
fValue2= 3.0;
fRe = 5.0;
}

public void testAdd()
{
Log.d( LOG_TAG, “testAdd” );
assertTrue( LOG_TAG+”1″, ( (fValue1 + fValue2 ) == fRe ) );
}
}

//ExampleSuite.java
import junit.framework.TestSuite;
public class ExampleSuite extends TestSuite
{
public ExampleSuite()
{
addTestSuite( MathTest.class );
}
}

與上一篇的例子比較後發現,除了引用的包、父類不一樣以外,其他部分是完全一樣的,在Android AVD上運行程序後看到的結果如下:



單擊按鈕“Launch test”運行測試用例,輸出測試結果,我們的測試都通過了。 這個測試界面是我們自己編寫的單元測試的界面,下一篇幅我們將重點介紹這部分。

總結說明

這裡我們簡要學習了android.test包,其實這個的內容遠不止這些,包含:3個Interface、20個class、2個Error,列舉如下:


android.test包深入的學習,只有到Android SDK中去仔細閱讀了。 通過學習android.test,讓我們對Android 系統的組成元素:Activity、Provider、Service有了更加深入的了解。

沒有留言:

張貼留言