《Android 編程權威指南》學習筆記 : 第20章 音頻播放與單元測試

測試依賴

添加測試所需要的依賴:

  • JUnit:默認已經添加
  • Mockito: 模擬對象

打開菜單【File】,選擇【Project Structure】,在【Dependenices > Modules > app】,點擊【+】按鈕,選擇【Library Dependenices】

在搜索框輸入:org.mockito,點擊 Search, 選擇類庫

  • mockito-core
  • mockito-inline

然後在 Step 2中選擇【testImplementation】
查看:app/build.gradle

    testImplementation 'org.mockito:mockito-core:4.6.1'
    testImplementation 'org.mockito:mockito-inline:4.6.1'

記得 Sync now

testImplementation作用範圍表示,這兩個依賴項只包括在應用的測試編譯裏。這樣就能避免在APK包裏捎帶上無用代碼庫了。
你用來創建和配置模擬對象的函數都在mockito-core裏了。
而mockito-inline是方便Mockito搭配Kotlin使用的特殊依賴。
在Kotlin中,所有的類都是final的。也就是說,要想繼承這些類,就得用上open修飾符。不幸的是,Mockito主要靠繼承來模擬測試類。這樣一來,如果Mockito想模擬Kotlin類,就做不到開箱即用了。mockito-inline依賴的作用就是繞開Kotlin的繼承限制,不用修改源文件,就能讓Mockito模擬Kotlin的那些final類和函數。

創建測試類

JUnit是最常用的Android單元測試框架,能和Android Studio無縫整合。要用它測試,首先要創建一個用作JUnit測試的測試類。打開SoundViewModel.kt文件,使用Command+Shift+T(或Ctrl+Shift+T)組合鍵。Android Studio會嘗試尋找這個類關聯的測試類。如果找不到,它就會提示新建


最後一步是選擇創建哪種測試類,或者說選擇哪個測試目錄存放測試類(androidTest和test)。在androidTest目錄下的都是整合測試類。
這裏,我們進行的是單元測試,故選擇 test目錄測試

點擊【OK】按鈕,自動生成測試類,如下圖所示

修改測試類並運行

修改下SoundViewModel.kt

class SoundViewModel: BaseObservable() {

//    val title: MutableLiveData<String?> = MutableLiveData()
//
//    var sound: Sound? = null
//        set(sound) {
//            field = sound
//            title.postValue(sound?.name) // 通知佈局,數據更新了
//        }

       var sound: Sound? = null
           set(sound) {
               field = sound
               notifyChange()
           }

        @get:Bindable
        val title: String?
           get()  = sound?.name


}

修改測試類SoundViewModelTest.kt

class SoundViewModelTest {

    private lateinit var sound: Sound
    private lateinit var subject: SoundViewModel

    @Before
    fun setUp() {
        sound = Sound("assetPath")
        subject = SoundViewModel()
        subject.sound = sound
    }

    @Test
    fun exposesSoundNameAsTitle() {
        assertTrue(subject.title.equals(sound.name))
    }
}
  • 以@Before註解的包含公共代碼的函數會在所有測試之前運行一次。按照約定,所有單元測試類都要有一個以@Before註解的setUp()函數。

爲了運行測試,右鍵單擊SoundViewModelTest類名,然後選擇Run 'SoundViewModelTest'。隨後,Android Studio的底部窗口會顯示測試結果

通過測試:

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章