Kotlin TDD
以 Android 開發為例
關於我
https://medium.com/@evanchen76
Evan 陳瑞忠
TDD
- Kotlin TDD:Bowling Game Kata
- Android TDD:踩地雷
- Android TDD:登入畫面
單元測試 Unit Test
@Test
fun addTest() {
val actual = math.add(1, 2)
val expected = 3
Assert.assertEquals(expected, actual)
}
class Math {
fun add(number1: Int, number2: Int): Int {
return number1 + number2
}
}
什麼是TDD
Kotlin TDD
Bowling Game TDD
測試案例
TDD的好處
-
先想清楚需求是什麼
-
思緒跟著需求。用工具產生程式碼,不需要在不同的檔案中跳來跳去。
-
避免Over Design
- 小步快走,有錯可以馬上退回來。
- 速度快
Android TDD
Android TDD 遇到的問題
- 有UI
- 遇到不知道怎麼測試
- 遇到不需要測試的
踩地雷
踩地雷
先寫哪個測試
先寫有沒有踩到地雷的判斷?
先寫UI?
先寫輸贏的判斷?
先寫附近地雷數的數字?
我以前都這樣做
先找最需要測試的
先找最複雜的邏輯
其實
先寫測試 != 先找可以測試的來寫
先寫測試 != 先找最需要測試的來寫
先看需求
先不管有哪些測試
先把需求拆成一步一步來看
從UI看需求
有81個格子
每一個都是蓋起來的
15%的格子有地雷
class CellCreator(){
fun create(): List<Cell>{
//產生81個Cell
}
}
Android TDD
圖片參考:Google I/O 2017
Android TDD
完成UI測試
不只是通過UI測試
完成UI的所有細節
點擊方格
單元測試:
- 點擊方格,方格的狀態會變成打開。
- 點擊方格,如果旁邊都沒有地雷,顯示旁邊的地雷數
- 點擊方格,旁邊如果數字是 0,就自動點擊打開
UI測試:
- (x)點擊方格,方格的狀態會變成打開。
- 點擊方格,如果旁邊都沒有地雷,顯示旁邊的地雷數
- (x)點擊方格,旁邊如果數字是 0,就自動點擊打開
標註地雷
單元測試:
- 你可以在方格裡插上旗子提醒該格為地雷
UI測試:
- 驗證該 Cell 長按後有出現旗子。
判定遊戲結果
單元測試:
- 除了有地雷的方格,其餘都被打開,則為贏得遊戲。
- 點擊到有地雷的方格,即為輸了遊戲。
UI 測試:
- 贏遊戲時,畫面應出現你贏了的文字。
- 輸遊戲時,畫面應出現你輸了的文字。
Android TDD
Android TDD
Login Sample
開啟頁面
登入成功/失敗->Snackbar
登入檢查
需求
1. 開啟畫面
2. 點擊登入
開啟App
開啟App後應看到:
帳號輸入欄位
密碼輸入欄位
登入按鈕
點擊登入
點擊登入,
如未輸入帳號密碼應提示
登入呼叫Repository並顯示載入中
如登入成功,應跳出Snackbar
如登入失敗,應跳出Snackbar
未輸入帳號密碼
紅燈
綠燈
登入成功
登入成功
Login
完成Repository
完成Activity,通過UI測試
總結
- 不是先挑需要測試的來寫
- 不是先挑最複雜的來寫
- 從需求去看
Android TDD
可不可以先把單元測試都寫完
再通過UI測試?
Android TDD
使用者體驗
透明度
Android TDD
民宿列表
收藏
排序
篩選
Android TDD
沒有講的
- Android Unit test
- Android UI Test
- Dependency Injection
- Mock、Stub
- Architecture
推薦課程
- 91 Joey【演化式設計:測試驅動開發與持續重構】
- 91 Joey【極速開發+】
https://medium.com/@evanchen76
End
Kotlin TDD
By evanchen76
Kotlin TDD
- 716