开发环境搭建

说实话,很多同学觉得配环境是小事,直接跳过。但我见过太多项目死在这个环节上——依赖冲突、运行器找不到、Gradle 版本死活对不上。嗯,磨刀不误砍柴工,咱们把环境搭稳了,后面才能放心写测试。

开发环境搭建知识体系 开发环境搭建 Android Studio 配置 Gradle 依赖管理 JUnit & Runner 集成 SDK 路径设置 AVD 模拟器配置 测试插件安装 testImplementation androidTestImpl. 版本兼容控制 JUnit4 / JUnit5 AndroidJUnitRunner testInstrumentation 三个分支必须同时就绪,漏掉任何一个都会导致测试跑不起来 我曾见过有人忘了配 AndroidJUnitRunner,然后跑去问为什么报“找不到测试运行器”

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,然后执行测试用例。

配置步骤:

  1. 在 build.gradle.kts 的 defaultConfig 里添加:
    testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
  2. 如果要用 JUnit5,要额外加 android-test-ext 和 junit-jupiter-api。不过我个人建议先上 JUnit4,等团队稳定了再升级。
  3. 写个简单测试验证环境:
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 混合测试时,你就不会因为这些基础问题分心了。