3. 环境搭建:Android Studio配置、Gradle依赖导入

我记得刚学Retrofit的时候,卡在最简单的一步——环境搞不定。说白了,Mock测试的基础就是先把项目配好。这一章我们就来把环境搞定,跟着我一步步走,保证不踩坑。

第一步:Gradle依赖导入

打开你项目的 build.gradle 文件(Module级别的,不是Project级的)。在 dependencies 块里添加以下内容:

dependencies {
    // Retrofit
    implementation 'com.squareup.retrofit2:retrofit:2.9.0'
    implementation 'com.squareup.retrofit2:converter-gson:2.9.0'

    // OkHttp
    implementation 'com.squareup.okhttp3:okhttp:4.12.0'
    implementation 'com.squareup.okhttp3:logging-interceptor:4.12.0'

    // MockWebServer
    testImplementation 'com.squareup.okhttp3:mockwebserver:4.12.0'
    androidTestImplementation 'com.squareup.okhttp3:mockwebserver:4.12.0'

    // JUnit
    testImplementation 'junit:junit:4.13.2'
}

我建议把版本号提取到 ext 块中,方便统一管理。比如:

ext {
    retrofitVersion = '2.9.0'
    okhttpVersion = '4.12.0'
    mockwebserverVersion = '4.12.0'
}
依赖 用途 推荐版本
Retrofit 网络请求框架 2.9.0
OkHttp HTTP客户端 4.12.0
MockWebServer 模拟服务端 4.12.0
JUnit 单元测试框架 4.13.2
这里要注意,MockWebServer必须放在testImplementation和androidTestImplementation两个配置中,这样单元测试和Instrumented测试都能用。

有个坑我踩过,现在说给你听。如果只加 testImplementation,在Android设备上跑测试时会报ClassNotFoundException。所以两个都得加,别偷懒。

第二步:Android Studio项目配置

在 android 块里,确保以下配置:

android {
    compileSdk 34

    defaultConfig {
        minSdk 21
        targetSdk 34
    }

    testOptions {
        unitTests.includeAndroidResources = true
    }

    // 如果你用Java 8或更高版本,记得加这个
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }
}
testOptions.includeAndroidResources = true 这行很重要,它能让单元测试使用Android的资源文件。虽然Mock测试不一定需要,但加上总没错,我通常都直接加上。

第三步:创建测试目录和源集

标准的Android测试目录结构是这样的:

app/
├── src/
│   ├── main/
│   │   ├── java/   // 你的业务代码
│   │   └── AndroidManifest.xml
│   ├── test/
│   │   └── java/   // 单元测试代码
│   └── androidTest/
│       └── java/   // Instrumented测试代码

如果目录不存在,手动创建就行。或者运行一次测试,Android Studio会自动生成,这个你试一次就知道了。

我个人习惯在 test/java/ 下建一个 mock 包,专门放Mock相关的测试类,这样结构清晰,不会乱。

第四步:验证依赖是否成功

添加完依赖后,点击"Sync Now"同步Gradle。如果一切顺利,你会看到控制台输出"BUILD SUCCESSFUL"。

然后写一个简单的验证测试:

import okhttp3.mockwebserver.MockWebServer;
import org.junit.Test;

public class MockSetupTest {
    @Test
    public void testMockWebServerLoads() throws Exception {
        MockWebServer server = new MockWebServer();
        server.start();
        // 如果能走到这里,说明依赖没问题
        server.shutdown();
    }
}
如果编译报错提示"failed to resolve",检查你的Gradle仓库配置,在 repositories 里加上 mavenCentral() 和 google()。

运行这个测试,绿色通过就代表环境搭建完成了。

我建议把MockWebServer的启动和关闭放在@Before和@After方法里,但初学阶段先跑通再说。
环境搭建流程图 准备阶段 配置阶段 验证阶段 创建Android项目 添加Gradle依赖 配置Android块 创建测试目录 同步Gradle 运行验证测试 确认仓库配置 检查 mavenCentral() 和 google() 是否存在

好了,环境搭建完成,可以开始写Mock测试了。