1. 程式人生 > >kotlin學習筆記——單元測試

kotlin學習筆記——單元測試

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。