在開發 Android App 的環結中,
測試也是很重要的一環,
其中比較常被使用的一個 Test framework 就是 Robolectric  。
這是一個偏向 unit test 的 framework,
本篇文章,
將記錄並分享如何在 Eclipse 的 IDE 中使用  Robolectric。
(也許之後也會分享如何在 Android studio 使用吧!?XD)

老實說,
官網也有說明,
各位朋友也可以直接到該網址看說明。

以下是我實際驗證的步驟:

1. 在 Eclipse 中 建立一個簡單的 Android App 專案。基本上這專案沒什麼特別注意事項,除了 Target/Compile API 要設為 18 ,這是因為 Robolectric 尚未支援 API 19。

2. 在該專案建立 Test Folder (這名字其實可以隨我們取,沒特定限制。)

3. 在該專案的 libs 下建立新 Folder Test,並把 robolectric-x.x.x-jar-with-dependencies.jar 放進去 。(這裡我覺得 Robolectric lib 不一定要放這理,待會設定 Robolectric 專案,讓該專案找得到就好)

4. 建立新 Java 專案 For Test,要注意是 Java 專案不是 Android 專案喔!

5. 在 新建專案對話框選 "Use project folder as root for sources and class files” ,按下一步

6. 在 Source Tab 選要測試檔案的 root folder,也就是剛剛第二步建立的 folder。

7. 在 Projects Tab 新增第一步建立的 Android App 專案。

8. 在 Libraries Tab 將 第三步中的 jar 檔,透過 Add Jars 放入本測試專案,然後 點 Add External Jar 將 "platforms/android-xx/android.jar” 放入 其中 xx 為 API taget version,我選了 18,接著點 Add Library 選 JUnit 並選Junit4

9. 在 Order and Export Tab 將 android.jar 移動到 robolectric 的下方

10. 點 Run -> "Run Configurations…”,雙擊 Junit,就可以進入設定頁。 給定本測試設定名字,選 “Run all tests in the selected project, package or source folder:” ,Test Runner 選 Junit 4,接著在下方選 "Eclipse JUnit Launcher"

11. 在 Arguments Tab 的 Working directory 中,點 Workspace.. 後選擇第一步建立的 Android App 專案。

12. 完成上面的步驟後,就設好了,我們可以建立一個簡單的測試來驗證是否正常運作。在第四步建立的專案中,新增一個 MainActivityTest 的 class,其 code 大概如下方

package com.example.myproject;

import org.robolectric.Robolectric;
import org.robolectric.RobolectricTestRunner;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;

import static org.hamcrest.CoreMatchers.equalTo;
import static org.junit.Assert.assertThat;

@RunWith(RobolectricTestRunner.class)
public class MainActivityTest {

    MainActivity activity;

    @Before
    public void setup()
    {
        this.activity = Robolectric.buildActivity(MainActivity.class).create().get();
    }

    @Test
    public void shouldHaveHappySmiles() throws Exception 
    {
        String hello = this.activity.getString(R.string.hello_world);
        assertThat(hello, equalTo("Hello world!"));
    }
}

 

13. 接著按 Run Junit,如果出現如下方的結果,就是 Robolectric 有設置成功,我們可以開始對 第一步建立的 Android App 專案寫 unit test 了

 

 

 

 

文章標籤
全站熱搜
創作者介紹
創作者 賽拉維‧柯南 的頭像
賽拉維‧柯南

賽拉維的秋天

賽拉維‧柯南 發表在 痞客邦 留言(0) 人氣(355)