面试题答案
一键面试1. 项目依赖配置
在 build.gradle
文件(模块级别的)中添加相关依赖:
androidTestImplementation 'androidx.test:runner:1.4.0'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0'
这里的版本号可根据实际情况调整,确保与项目中的其他依赖兼容。
2. 设置测试目标
在 AndroidManifest.xml
文件中,为测试应用设置 targetPackage
,指定要测试的应用包名:
<instrumentation
android:name="androidx.test.runner.AndroidJUnitRunner"
android:targetPackage="com.example.your.package"
android:label="Your Tests"/>
将 com.example.your.package
替换为实际要测试的应用包名。
3. 配置测试规则
在测试类中,通常会使用 @Rule
注解来配置测试规则。例如,对于 Espresso 测试:
import android.content.Context
import androidx.test.platform.app.InstrumentationRegistry
import androidx.test.ext.junit.runners.AndroidJUnit4
import androidx.test.filters.LargeTest
import androidx.test.rule.ActivityTestRule
import org.junit.Rule
import org.junit.Test
import org.junit.runner.RunWith
@RunWith(AndroidJUnit4::class)
@LargeTest
class ExampleInstrumentedTest {
@get:Rule
val activityRule = ActivityTestRule(YourActivity::class.java)
@Test
fun useAppContext() {
val appContext = InstrumentationRegistry.getInstrumentation().targetContext
assert(appContext.packageName == "com.example.your.package")
}
}
将 YourActivity
替换为实际要测试的 Activity 类。
4. 初始化测试环境
在测试类或测试套件的 @Before
方法中,可进行一些初始化操作,例如初始化 Espresso 相关配置:
import android.content.Context
import androidx.test.platform.app.InstrumentationRegistry
import androidx.test.ext.junit.runners.AndroidJUnit4
import androidx.test.filters.LargeTest
import androidx.test.rule.ActivityTestRule
import org.junit.Rule
import org.junit.Test
import org.junit.runner.RunWith
import android.widget.TextView
import androidx.test.espresso.Espresso
import androidx.test.espresso.ViewInteraction
import androidx.test.espresso.matcher.ViewMatchers.withId
import org.junit.Before
@RunWith(AndroidJUnit4::class)
@LargeTest
class ExampleInstrumentedTest {
@get:Rule
val activityRule = ActivityTestRule(YourActivity::class.java)
private lateinit var context: Context
@Before
fun setUp() {
context = InstrumentationRegistry.getInstrumentation().targetContext
// 可以在此处添加 Espresso 的自定义配置,如超时时间等
Espresso.setFailureHandler { error, viewMatcher ->
// 自定义失败处理逻辑
}
}
@Test
fun useAppContext() {
assert(context.packageName == "com.example.your.package")
}
}
5. 运行测试
可以通过 Android Studio 的测试运行界面直接运行测试,也可以在命令行使用 Gradle 命令运行,如 ./gradlew connectedAndroidTest
,确保设备或模拟器已连接且处于可用状态。