iT邦幫忙

2021 iThome 鐵人賽

DAY 4
1
Software Development

溫柔學姐的Kotlin補課/教學系列 第 4

寢室的秘密授課(三):測試案例 Test Case

  • 分享至 

  • xImage
  •  

詩憶一走進學校的綜合餐廳就看到唯心和另一個男生坐在中間的位置聊天,不由得加快腳步。

翟文志眼角餘光注意到正在走近的詩憶,看了一眼唯心,唯心向他點點頭,他就迅速提包起身離開。

看著擦身而過的人,詩憶還沒將疑問說出口,唯心就主動和詩憶說明:「他就是我提過的情報通。」

「喔。」詩憶很快就把人忘在腦後,開始研究餐廳裡提供的餐點。

在詩憶煩惱要選哪個餐點時,唯心指著右側第一排的店家。「這家的韓式人參雞腿飯還不錯,妳可以嚐嚐。」

詩憶將燉爛入味的雞腿肉放進口裡品嚐。『嗯,好吃,學姐和我的口味還滿相似的』詩憶開心的這麼想著。

看著詩憶的反應,唯心淡淡地笑著,眼裡有一絲寂寞。

回到寢室後,唯心接手電腦前問了一個問題。「妳現在的IDE是深色主題,要不要和我一樣把IDE換成淺色主題?」

詩憶其實不太懂深色淺色主題的差異,但是覺得和唯心一樣應該不錯,於是就點點頭,放手讓唯心進到IntelliJ IDEA裡的Preferences更換主題顏色。

圖1

圖2

「我直接建立新檔案再把測試案例和範例程式複製過來,妳可以學著做,說不定以後妳也會當上助教。」唯心說著把游標移動到test資料夾下的kotlin資料夾,建立一個新的名為四則運算測試的class檔案,將測試案例複製進去;接著又把游標移動到main資料夾下的kotlin資料夾,建立一個新的名為四則運算的class檔案,將範例程式複製進去。

圖3

圖4
圖5
圖6

「因為妳還不會讀程式碼,所以我們先只看測試案例的部分。」唯心用觸控板像操作網頁一樣放大程式碼的字型。

import kotlin.test.Test
import kotlin.test.assertEquals
import kotlin.test.assertFailsWith

class 四則運算測試 {
    @Test
    fun 加法測試() {
        assertEquals(2, 學號().四則運算(1, '+', 1))
    }

    @Test
    fun 減法測試() {
        assertEquals(0, 學號().四則運算(1, '-', 1))
    }

    @Test
    fun 乘法測試() {
        assertEquals(1, 學號().四則運算(1, '*', 1))
    }

    @Test
    fun 除法測試() {
        assertEquals(1, 學號().四則運算(1, '/', 1))
        assertFailsWith<ArithmeticException> { 學號().四則運算(1, '/', 0) }
    }

    @Test
    fun 例外測試() {
        assertFailsWith<IllegalArgumentException> { 學號().四則運算(1, '?', 0) }
    }
}

「妳先說說可以看得懂的部分。」唯心起身將座位還給原主人詩憶。

詩憶坐下瞪著程式碼,她努力過,但還是理解失敗,於是只能尷尬的說。「學姐,除了中文以外,我全部看不懂。英文單字雖然知道意思,但是不知道為什麼那樣放。」

唯心頓了一下,但馬上就用輕快的聲音回應:「好吧,我說明一下。」她輕輕敲了下螢幕。「妳可以看到程式碼裡面很多括號,對吧?先把括號想成一個箱子,現在有一個名為四則運算的箱子,把兩個數字和加號依序丟進去搖一搖,就會掉出兩個數字相加的結果;把減號丟進去就會掉出兩個數字相減的結果,乘號和除號以此類推。」

怕詩憶不明白,唯心追加說明。「程式裡的乘號是星號,除號是斜線。只有一開始會比較生疏,很快妳就會習慣這些特殊符號。」她讓詩憶觸摸鍵盤上+-*/的位置,詩憶收回手之後,她才繼續說下去。「而@Test下的都是測試用的程式碼。加法測試的測試案例是計算1加1,標準答案是2。在負責驗證工作的assertEquals箱子裡依序把標準答案2,和範例程式計算的結果丟進去,如果兩邊一樣就通過,不一樣的話,就算失敗。」游標接著被移動到有行數號碼的灰色區塊。「只想跑驗證加法的話,點擊加法測試左側的三角形,如果點擊四則運算測試左側的三角形,會把五個測試案例全跑完。」

圖7
圖8


上一篇
寢室的秘密授課(二):程式概念
下一篇
寢室的秘密授課(四):測試覆蓋率 Test Coverage
系列文
溫柔學姐的Kotlin補課/教學31
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言