iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 11
0

今天會透過https://codelabs.developers.google.com/codelabs/android-training-unit-tests/index.html
來學習如何撰寫單元測試

首先先去clone專案
https://github.com/google-developer-training/android-fundamentals-starter-apps-v2

然後在android studio運行底下的
SimpleCalc

同時別忘了在build.gradle新增build版本

build.gradle(module:app)

android {
...
   buildToolsVersion = '27.0.3'
}

接著打開CalculatorTest.java(位置如下圖)
https://ithelp.ithome.com.tw/upload/images/20190926/20120279nBj2qXxQbh.png

打開專案後

注意以下幾點
-注意看專案上方的import 這個class並沒有依賴Android framework classes
-addTwoNumbers()為一個測試案例 注意 只有標註@Test的function才會被測試框架執行測試
-addTwoNumbers()第一行是從Calculator運行add() function 你只能運行public的方法 private的不行
-第二行是測試斷點 本例來說就是 add(1 + 1) 結果要是2測試才會通過 否則fail

接著來運行一次test
你可以點擊class旁的箭頭運行(如附圖)
https://ithelp.ithome.com.tw/upload/images/20190926/201202792AKZZ1ubp2.png

順利通過的話會如附圖顯示(注意fun旁邊有綠色勾勾)
https://ithelp.ithome.com.tw/upload/images/20190926/20120279fXyL4v9cXr.png

接著我們故意把斷點設成錯的 看看結果會如何
將assertThat改為下列

assertThat(resultAdd, is(equalTo(3d)));

https://ithelp.ithome.com.tw/upload/images/20190926/20120279kQgfS0Jzjj.png

再舉個例外狀況的測試例子

@Test(expected = IllegalArgumentException.class)
public void divByZeroThrows() {
   double resultDiv = mCalculator.div(32d, 0);
   if (resultDiv == Double.POSITIVE_INFINITY) throw new IllegalArgumentException();
}

以上就是基本的測試範例
如果function有使用到android framework 那麼測起來會比較麻煩
之後碰到再詳細說明

今天的solution

https://github.com/google-developer-training/android-fundamentals-apps-v2/tree/master/SimpleCalcTest


上一篇
Day10 unit tests 介紹
下一篇
Day12 Nested RecyclerView(番外篇)
系列文
Android × CI/CD 如何用基本的MVVM專案實現 CI/CD 30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言