Eclipse IDE Android Test Project

來源:互聯網
上載者:User

因為我是測試出身,剛轉來做手機開發,寫了幾天代碼,所以這幾天總是蠢蠢欲動的想寫的東西,考慮都老本行,所以決定寫一篇如何做Android 單元測試,下來就開始我的第一個Android的測試工程:

  1. 一些資源:
    1. Google的開發文檔,不過要翻牆才能看的到,不過有很多地方都可以下載到離線的包。
    2. 剩下的就是Android的開發環境,請參考開發文檔自己配置。
  2. 下面先建立一個Android的工程,裡面按照正常的開發過程實現一些功能, 我有一個工程裡面實現的Android聯絡的一些操作,因為我也需要驗證我的這些操作是否真正的有效,開始我是在介面上添加了一個測試按鈕,將一些調用方法寫在這個按鈕裡,每測試完一個功能就把這個按鈕裡面的實現刪掉,再寫新的代碼,這樣做十分不方便,也破壞了原有的軟體“功能”,反正都要測試,為什麼不寫真正的測試代碼呢?而且寫測試代碼也是我的老本行,下面就開始真正的測試代碼:
    1. 建立一個Test工程:點擊菜單“File->New->Project”,然後選擇Android Test Project然後填入測試工程的名稱,選擇被測試的工程,就建好測試工程了。
    2. 建好測試工程後,可以看到測試工程的結構的一般的開發工程是差不多的,然後在測試工程的包下面建立一個JUnit Test Case, 寫好測試案例的名稱這裡我們選擇New JUnit 3 Test, setUp()和tearDown()也打上勾,當然你也不打勾,後面直接在測試代碼裡寫上就是了。
    3. 建立立的測試類別是基於TestCase類的,但是我們測試過程中要用到軟體的一些“功能”,所以我們要做一點點的修改如下:
         1:  

         2: public class TestPersonCantact extends ActivityInstrumentationTestCase2<MainActivity> {

         3:  

         4:     private Context ctx;

         5:  

         6:     public TestPersonCantact(String pkg, Class<WebShare> activityClass) {

         7:         super("com.android.contaxt", WebShare.class);

         8:         // TODO Auto-generated constructor stub

         9:     }

        10:  

        11:     public TestPersonCantact() {

        12:         super("com.android.contact", WebShare.class);

        13:     }

        14:  

        15:     protected void setUp() throws Exception {

        16:         super.setUp();

        17:         ctx = getActivity();

        18:  

        19:     }

        20:  

        21:     protected void tearDown() throws Exception {

        22:         super.tearDown();

        23:     }

    4. 這裡就完成了測試案例的準備工作了,記得這兩個建構函式要寫對了,不然會有問題。接下來就開始寫我們的測試案例了,因為是第一次用JUnit, 發現它測試案例和Python的有點像,函數名格式為testXXXX()就可以了,而在Gtest裡面是用一個宏來表示的,好了寫一個方法如:
   1: public void testDeletePersonContact() throws NoIdException {        

   2:     ContactsHelperhelper = new ContactsHelper(ctx);

   3:     PersonContact one = PersonContact

   4:             .newPersonContact("TestPersonContact@gmail.com");

   5:     PersonName name = PersonName.newPersonName("FirstName", "LastName",

   6:             null, null, null);

   7:     TelephoneNumber tel = TelephoneNumber.newTelephoneNumber("123123123",

   8:             3, null);

   9:     TelephoneNumber tel2 = TelephoneNumber.newTelephoneNumber("1231231230",

  10:             1, null);

  11:  

  12:     one.name = name;

  13:     one.addTelephoneNumber(tel);

  14:     one.addTelephoneNumber(tel2);

  15:  

  16:     //... Email, ...

  17:        try {

  18:         helper.add(testGuy);

  19:     } catch (RemoteException e) {

  20:         // TODO Auto-generated catch block

  21:         e.printStackTrace();

  22:     } catch (OperationApplicationException e) {

  23:         // TODO Auto-generated catch block

  24:         e.printStackTrace();

  25:     }

  26:  

  27:     PersonContact pc = helper.getPersonContactById(one.id);

  28:  

  29:     try {

  30:         helper.delete(pc);

  31:     } catch (RemoteException e) {

  32:         // TODO Auto-generated catch block

  33:         e.printStackTrace();

  34:     } catch (OperationApplicationException e) {

  35:         // TODO Auto-generated catch block

  36:         e.printStackTrace();

  37:     }

  38:     

  39:     PersonContact pc1 = helper.getPersonContactById(pc.id);

  40:     this.assertEquals("telephoneNumbers after Delete Count Is:" + pc1.telephoneNumbers.size(), pc1.telephoneNumbers.size(), 0);

  41:     // ...

  42: }

JUnit也提供了很多assertEquals, assertTrue之類的方法,可以讓我們很快的完成測試案例代碼的實現,我一口氣寫幾個看看運行效果如下:

看著一道美麗的綠條,心裡真是開心哈。

 

建立大家在寫代碼的時候,也養成寫測試代碼的習慣,可以把自己寫的很多零散的測試代碼很好的組織、歸檔,別人看了你的測試代碼後就知道你的介面怎麼調用,根本不用你再為別人講一次這個介面需要如何如何用?這樣不是很好麼^_^

 

 

 

 

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.