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方法里,但初学阶段先跑通再说。
好了,环境搭建完成,可以开始写Mock测试了。