课程进度 86% · 第10/11章第10/11章 · 标签 1/2
— 1 —
单元测试(JUnit)
单元测试用于验证独立模块的业务逻辑。Android 项目支持在 JVM 上运行的本地单元测试和在设备上运行的 Instrumented 测试。
java
1
2
public void testAddition() {
3
assertEquals(4, 2 + 2);
4
}
5
6
// 使用 Mockito 模拟依赖
7
8
public void testLoginPresenter() {
9
LoginView mockView = mock(LoginView.class);
10
LoginPresenter presenter = new LoginPresenter(mockView);
11
12
presenter.login("admin", "123456");
13
14
verify(mockView).showLoading();
15
verify(mockView).onLoginSuccess(anyString());
16
verify(mockView, never()).onLoginError(anyString());
17
}
📖测试文件放在 src/test/java/ 目录下,使用 JUnit 4 + Mockito 进行单元测试
— 2 —
UI 自动化测试(Espresso)
Espresso 是 Google 官方 UI 测试框架,可模拟用户交互并验证界面状态。
java
1
// 点击按钮
2
onView(withId(R.id.btn_click)).perform(click());
3
4
// 检查文本
5
onView(withId(R.id.tv_hello))
6
.check(matches(withText("Hello Android")));
7
8
// 输入文本
9
onView(withId(R.id.edit_input)).perform(typeText("测试输入"));
10
11
// 滚动列表并点击
12
onView(withId(R.id.recycler))
13
.perform(RecyclerViewActions.actionOnItemAtPosition(3, click()));
◆
测试配置
groovy
1
// build.gradle 依赖配置
2
androidTestImplementation 'androidx.test:runner:1.5.2'
3
androidTestImplementation 'androidx.test.espresso:espresso-core:3.5.1'
4
androidTestImplementation 'androidx.test.espresso:espresso-contrib:3.5.1'
5
testImplementation 'junit:junit:4.13.2'
6
testImplementation 'org.mockito:mockito-core:5.3.0'