kotlin學習筆記——單元測試

Kotlin學習筆記系列:http://blog.csdn.net/column/details/16696.html


Unit Test

kotlin也可以進行unit testing,如果項目中之前沒有,那麼需要做一些準備工作。

首先引入依賴
testCompile 'junit:junit:4.12'
這裏注意不能是androidTestCompile,否則會報錯Unresolved reference: xxxx

然後創建目錄
在src目錄下(main的同級)創建test/java目錄,創建完會發現java目錄的顏色自動爲綠色,表示ide知道我們要使用unit testing模式。
在java目錄下創建package(與項目主包名一致)

創建測試代碼
在package下創建測試類編寫代碼即可,例如:
import org.junit.Test
import kotlin.test.assertTrue
class SimpleTest {
 @Test fun unitTestingWorks() {
     assertTrue(true)
 }
}
運行即可



Instrumentation Test

與unit testing一樣,首先引入依賴
defaultConfig {
    ...
    testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}

androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
    exclude group: 'com.android.support', module: 'support-annotations'
})
androidTestCompile ("com.android.support.test.espresso:espresso-contrib:2.2.1"){
    exclude group: 'com.android.support', module: 'appcompat'
    exclude group: 'com.android.support', module: 'support-v4'
    exclude group: 'com.android.support', module: 'support-annotations'
    exclude module: 'recyclerview-v7'
}
exclude去掉一些依賴,防止重複引入
(contrib這個增加了一些額外功能,比如測試recyclerview)

然後創建目錄,與unit一樣,只不過根目錄不是test而是androidTest,其他一樣。

創建測試代碼
import android.support.test.espresso.Espresso.onView
import android.support.test.espresso.action.ViewActions.click
import android.support.test.espresso.assertion.ViewAssertions.matches
import android.support.test.espresso.contrib.RecyclerViewActions
import android.support.test.espresso.matcher.ViewMatchers.isAssignableFrom
import android.support.test.espresso.matcher.ViewMatchers.withId
import android.support.test.rule.ActivityTestRule
import android.support.v7.widget.RecyclerView
import android.widget.TextView
import org.junit.Rule
import org.junit.Test

class SimpleActivityTest {

    @get:Rule
    val activity = ActivityTestRule(MainActivity::class.java)

    @Test fun testItem(){
        onView(withId(R.id.recyclerview)).perform(RecyclerViewActions.actionOnItemAtPosition<RecyclerView.ViewHolder>(0click()))
        onView(withId(R.id.textView)).check(matches(isAssignableFrom(TextView::class.java)))
    }
}
testitem中第一行代碼是模擬點擊recyclerview的第一個item。第二行是判斷id是textview的組件是否是TextView。

發佈了106 篇原創文章 · 獲贊 30 · 訪問量 26萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章