[Android] TDD(Test-driven development)開發Day1
早有耳聞
TDD:Test-driven development測試驅動開發。是一種開發流程,觀念是「先寫測試,在進入開發工作」。在進行開發工作以前,編寫測試,預先模擬欲測試的情境
以下是請ChatGPT幫忙分析優缺點
優點:
更高質量的代碼:TDD需要在開發代碼之前先寫測試案例,這能夠讓開發人員更好地理解代碼的要求和目的。由於每次修改代碼時都需要通過測試案例,這就能夠有效地減少代碼中的錯誤和缺陷。
更好的可維護性:TDD讓開發人員更好地了解代碼的功能和結構,因此可以更容易地進行修改和維護。此外,由於代碼已經通過測試,開發人員可以更自信地進行修改和重構,而不必擔心破壞現有的功能。
更好的文檔化:TDD的測試案例可以看作是代碼的文檔,描述了代碼應該做什麼。這能夠幫助開發人員更好地理解代碼的目的和設計,也能夠讓新的開發人員更快地上手。
更快的開發速度:TDD可以讓開發人員更快地進行開發,因為他們已經知道代碼應該如何工作。此外,由於代碼已經通過測試,開發人員可以更快地發現和解決錯誤。
缺點:
需要額外的時間:TDD需要開發人員先寫測試案例,然後再編寫實際代碼。這需要額外的時間和努力,尤其是在開發複雜系統時。
需要額外的技能:TDD需要開發人員具備撰寫測試案例的技能。如果開發人員沒有這種技能,那麼他們需要額外學習,這也需要額外的時間和努力。
需要遵循嚴格的規範:TDD需要開發人員嚴格遵循測試案例和代碼的規範,這有時可能會限制開發人員的創造力和靈活
廢話不多說開始測試:
-在專案下先新增一個Math.kt
-新增
fun add(number1: Int, number2: Int): Int {-接著在test下新增一個MathTest.kt
return number1 + number2
}
-新增
@Test
fun addTest(){
val expected = 3 //預期結果
val actual = myMath.add(1, 2) //呼叫被測試的方法
Assert.assertEquals(expected, actual) //驗證預期與結果
}
-透過Junit assert去確認是否是你要的結果
-在要測試的function上面增加一個@Test的annotation,在綠色箭頭點一下run即可
-pass 表示成功囉
閱讀自:
https://medium.com/evan-android-note/android-tdd-%E7%B3%BB%E5%88%97-02-%E7%AC%AC%E4%B8%80%E5%80%8B%E6%B8%AC%E8%A9%A6-f7ec18530d28
-通常我們常用到了Assert有
assertEquals 判斷2個物件是否相等
assertNotEquals 判斷2個物件是否不為相等
assertTrue 驗證是否為真
assertNull 驗證物件是否為null
assertNotNull 驗證物件是否不為null
assertArrayEquals 驗證陣列是否相同
assertEquals 判斷2個物件是否相等
assertNotEquals 判斷2個物件是否不為相等
assertTrue 驗證是否為真
assertNull 驗證物件是否為null
assertNotNull 驗證物件是否不為null
assertArrayEquals 驗證陣列是否相同
-我們可以在程式碼中點右鍵->Generate
-SetUp->@Before
-TearDown->@After
-TearDown->@After
-分別表示在每個測試的function測試前&後可以先做什麼設定
@Before 雖然好用,但需要注意以下幾點
- 避免在Before初始化只有某些測試會用到的物件
- 避免在Before寫太複雜的程式碼,這會讓你在看測試程式碼時難以除錯
- 可以考慮使用工廠方法來進行初始化
閱讀自:
https://medium.com/evan-android-note/android-tdd-%E7%B3%BB%E5%88%97-02-%E7%AC%AC%E4%B8%80%E5%80%8B%E6%B8%AC%E8%A9%A6-f7ec18530d28
留言
張貼留言