Espresso
是Google
推出的一个AndroidUI测试框架。
Espresso
官网:https://developer.android.google.cn/training/testing/espresso
在app
模块的build.gradle.kts
中设置如下:
plugins {
id("com.android.application")
id("kotlin-android")
id("kotlin-android-extensions")
}
android {
compileSdkVersion(28)
defaultConfig {
minSdkVersion(18)
targetSdkVersion(28)
applicationId = "com.fpliu.newton.util.app"
versionCode = 1
versionName = "1.0.0"
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
}
sourceSets {
getByName("main") {
jniLibs.srcDir("src/main/libs")
java.srcDirs("src/main/kotlin")
}
getByName("androidTest") {
java.srcDirs("src/androidTest/kotlin")
}
}
}
dependencies {
testApi("junit:junit:4.12")
//https://developer.android.google.cn/training/testing/espresso/setup
androidTestImplementation("androidx.test.espresso:espresso-core:3.2.0")
androidTestImplementation("androidx.test:runner:1.2.0")
androidTestImplementation("androidx.test:rules:1.2.0")
}
在app
模块的${androidTestSourceSet}/${packangeName}
中编写测试用例。
此示例中:${androidTestSourceSet}
是src/androidTest/kotlin
,${applicationId}
是com.fpliu.newton.util.app
,那么就是在src/androidTest/kotlin/com/fpliu/newton/util/app
中编写测试用例。
示例:
package com.fpliu.newton.util.app
import android.app.Application
import androidx.test.espresso.Espresso.onView
import androidx.test.espresso.assertion.ViewAssertions.matches
import androidx.test.espresso.matcher.ViewMatchers.*
import androidx.test.filters.LargeTest
import androidx.test.rule.ActivityTestRule
import androidx.test.runner.AndroidJUnit4
import com.fpliu.newton.util.appContext
import org.junit.Rule
import org.junit.Test
import org.junit.runner.RunWith
@RunWith(AndroidJUnit4::class)
@LargeTest
class Tests {
@get:Rule
val activityRule = ActivityTestRule(MainActivity::class.java)
@Test
fun tvIsDisplayed() {
onView(withId(R.id.tv)).check(matches(isDisplayed()))
}
@Test
fun checkAppContextIsNotNull() {
assert(appContext is Application)
}
}
在类上运行所有的测试用例。
在AndroidStudio中,方法上运行单个测试用例会报错,这是因为,AndroidStudio认为你是做单元测试,而不是Android测试
。