close

https://farm9.static.flickr.com/8641/16285202260_dc56f29ea1.jpg

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

https://farm9.staticflickr.com/8668/15850170494_0aab2d8de2.jpg

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

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

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。

https://farm8.staticflickr.com/7305/16472210662_0ee90480e9.jpg

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

https://farm9.staticflickr.com/8592/16285465418_b58af68dc8.jpg

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

https://farm9.staticflickr.com/8628/16473161735_bd4e27ec3d.jpg

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

https://farm8.staticflickr.com/7398/16287270557_56ba542ea3.jpg

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

https://farm8.staticflickr.com/7406/15850729294_4a1e2c3fca.jpg

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

https://farm9.staticflickr.com/8592/16471510631_5ea3ec69d2.jpg

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 了

 

https://farm8.staticflickr.com/7298/16287068539_705ac9cf78.jpg

 

 

 

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 賽拉維‧柯南 的頭像
    賽拉維‧柯南

    賽拉維的秋天

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