开发环境搭建
说实话,很多同学觉得配环境是小事,直接跳过。但我见过太多项目死在这个环节上——依赖冲突、运行器找不到、Gradle 版本死活对不上。嗯,磨刀不误砍柴工,咱们把环境搭稳了,后面才能放心写测试。
Android Studio 配置
我个人习惯一开始就把 SDK 路径、Gradle JDK 和模拟器参数定死。你想想看,如果这些基础项飘忽不定,后面出问题根本没法排查。
核心配置项:
- SDK Location:指向你本地的 Android SDK 目录(比如
/Users/xxx/Library/Android/sdk) - Gradle JDK:建议用 JDK 17,别用太老的版本,否则编译容易卡住
- 模拟器(AVD):选 API 29 以上,x86_64 镜像,少跑 ARM 转换层,快很多
另外别忘了安装测试插件。在 Settings → Plugins 里搜索 "Android Tests Support",确保已启用。我以前有次没留意这个,结果自动化测试一直报「测试类找不到」,折腾了半天。
Gradle 依赖管理
Gradle 这块水比较深。我直接给你看一个能用的 build.gradle.kts 片段——注意我用的是 Kotlin DSL,但 Groovy 同理。
dependencies {
// 单元测试(纯 JVM,不跑设备)
testImplementation("junit:junit:4.13.2")
testImplementation("org.mockito:mockito-core:5.3.1")
// 组件测试(需要设备或模拟器)
androidTestImplementation("androidx.test:runner:1.5.2")
androidTestImplementation("androidx.test:rules:1.5.0")
androidTestImplementation("androidx.test.espresso:espresso-core:3.5.1")
androidTestImplementation("androidx.compose.ui:ui-test-junit4:1.5.0")
}
关键区别:
| 作用域 | 运行位置 | 用途 |
|---|---|---|
testImplementation | 本地 JVM | 纯逻辑、ViewModel、Repository 测试 |
androidTestImplementation | 设备/模拟器 | UI 测试、Espresso、Compose 测试 |
版本兼容是个暗坑。比如 Espresso 3.5.1 必须搭配 androidx.test:runner 1.5.2。我踩过一次:直接拷贝旧项目的 espresso 3.4.0,结果跑时直接崩溃,日志里全是 NoSuchMethodError。
避坑指南: 把 Gradle 版本、AGP 版本、Compose 版本、测试库版本统一写在一个
libs.versions.toml 里,别散在多个 module 中。我用这种 catalog 方式之后,再没闹过版本冲突。
JUnit 与 AndroidJUnitRunner 集成
说白了,测试框架的入口就是 AndroidJUnitRunner。它负责在设备上启动 instrumentation,然后执行测试用例。
配置步骤:
- 在
build.gradle.kts的defaultConfig里添加:
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" - 如果要用 JUnit5,要额外加
android-test-ext和junit-jupiter-api。不过我个人建议先上 JUnit4,等团队稳定了再升级。 - 写个简单测试验证环境:
import org.junit.Test
import org.junit.runner.RunWith
import androidx.test.runner.AndroidJUnit4
@RunWith(AndroidJUnit4::class)
class ValidateSetupTest {
@Test
fun testEnvironmentWorks() {
assert(true)
}
}
运行一下这个测试。如果通过,说明基础环境没问题。如果报错,八成是 Gradle 缓存没清——./gradlew clean 试试看。我以前被这个坑了好多回。
快速检查清单:
- Android Studio 版本 >= Hedgehog (2023.1.1)
- AGP 版本 >= 8.2
- Gradle 版本 >= 8.5
- compileSdk >= 34
- testInstrumentationRunner 已配置
嗯,到这里环境就算搭好了。不用急着往下,先在模拟器上跑通一个空测试,确认一切就绪。后面讲真正的 Espresso + Compose 混合测试时,你就不会因为这些基础问题分心了。