Android Unit Test (一)
由於最近上了SkillTree的TDD課程,加上學費也不少…沒有整理的話應該很快就會忘,所以我就嘗試以Android 的方式來重現上課的內容。觀念會稍微提到而已,最主要的內容會是實做為主。
Unit Test 的觀念
這些觀念其實網路上都有很多資源可以查的到,在這裡只是提供關鍵字
3A 原則
- Arrange : 初始化
- Act : 執行測試動作
- Assert : 驗證
FIRST
- Fast : 快速驗證
- Independent : 測試之間不會有相依關係
- Repeatable : 每次執行的測試都是會是一樣的
- Self-Validating : 能自我驗證
- Timely : 測試碼要比production code 早完成
Android 建置環境
接下來的幾篇都會以下列的環境為主
- Android Studio 1.4
- JDK 7
開始第一個Unit Test
這邊要驗證的是一個簡單的加法,為了快速上手。暫時不採用TDD的做法(先寫測試)
1. 建立空白專案
要開甚麼專案都行,Android TV , Android Wear 也沒關係,本節重點是放在測試程式
2. 建立 MyMath 類別並實做加法
public class MyMath {
public int add(int first, int second){
return first + second;
}
}
3. 建立測試類別
請見下圖,Android Studio 專案的測試程式預設是放在 src/androidTest/java/(packageName) 底下,在這裡建立一個”MyMathTest”的類別
4. 撰寫測試程式碼
要驗證加法是不是正確,我們需要輸入、實際輸出、以及期待的輸出結果。在這個例子中,輸入是1跟2,期待的輸出結果是3,要是實際輸出等於期待輸出,本次測試就會通過。
public class MyMathTest extends AndroidTestCase{
public void test_add_first_1_second_2_equals_3(){
//arrange
int first = 1;
int second = 2;
int expect = 3;
MyMath myMath = new MyMath();
//act
int actual = myMath.add(first, second );
//assert
assertEquals(expect, actual);
}
}
Tip:
- 為了能夠運行測試,MyMathTest 要繼承AndroidTestCase。
- assert為單元測試的基礎,assert的結果會決定這次測試的是否通過,在本例中expect 與 actual 值一樣的話 assertEquals()就會通過
5. 執行測試
可選擇使用模擬器或實機來執行測試
等待一段時間後,可以看到綠燈,代表測試通過!!
沒有留言:
張貼留言