求荐Android自动化测试Espresso零基础入门教程
Hey there! 从Appium转Espresso确实需要一点适应,但别担心,我整理了一套零基础友好的入门步骤,完全适配Android Studio新手:
零基础Espresso入门指南(适配Android Studio新手)
第一步:先搞定Android Studio基础
- 启动Android Studio后,跟着首次安装配置向导完成操作,它会自动帮你下载SDK、模拟器等必备工具,不用手动折腾
- 新建一个最简单的
Empty Activity项目,先熟悉核心项目结构:res/layout:存放界面布局文件java/com/xxx/:存放业务代码和测试代码build.gradle(模块级):用来配置项目依赖
第二步:快速理解Espresso核心逻辑
Espresso是Android官方的UI自动化框架,核心就三个关键动作,记好这三点就能写基础测试:
onView():定位你要操作的UI控件perform():对控件执行操作(比如点击、输入文本)check():验证操作后的结果是否符合预期
举个最直观的例子:
// 点击ID为my_button的按钮 onView(withId(R.id.my_button)).perform(click()); // 验证ID为result_text的控件显示指定文本 onView(withId(R.id.result_text)).check(matches(withText("Hello Espresso!")));
第三步:配置Espresso依赖
打开模块级的build.gradle文件(注意不是项目根目录的那个),在dependencies代码块中添加以下依赖:
androidTestImplementation 'androidx.test.espresso:espresso-core:3.5.1' androidTestImplementation 'androidx.test.ext:junit:1.1.5'
点击右上角的Sync Now按钮,等待依赖下载同步完成。
第四步:写你的第一个Espresso测试
- 找到
androidTest/java/com/your/package/目录,右键新建一个测试类,比如MainActivityTest - 复制以下示例代码(记得替换成你自己项目的控件ID):
import androidx.test.ext.junit.rules.ActivityScenarioRule; import androidx.test.ext.junit.runners.AndroidJUnit4; import org.junit.Rule; import org.junit.Test; import org.junit.runner.RunWith; import static androidx.test.espresso.Espresso.onView; import static androidx.test.espresso.action.ViewActions.click; import static androidx.test.espresso.assertion.ViewAssertions.matches; import static androidx.test.espresso.matcher.ViewMatchers.withId; import static androidx.test.espresso.matcher.ViewMatchers.withText; @RunWith(AndroidJUnit4.class) public class MainActivityTest { // 自动启动MainActivity @Rule public ActivityScenarioRule<MainActivity> activityRule = new ActivityScenarioRule<>(MainActivity.class); @Test public void clickButton_ShowsExpectedText() { // 点击按钮 onView(withId(R.id.test_button)).perform(click()); // 验证文本是否正确显示 onView(withId(R.id.result_tv)).check(matches(withText("按钮已点击!"))); } }
- 右键点击测试方法,选择
Run,就能在模拟器或真机上运行你的第一个Espresso测试啦!
第五步:后续进阶方向
- 学习更多控件定位Matcher:比如
withText()、withContentDescription(),或者自定义Matcher处理复杂控件 - 了解
ActivityScenario的用法,灵活控制Activity的启动和生命周期 - 学习处理异步操作(比如网络请求),可以用
IdlingResource等待异步任务完成
内容的提问来源于stack exchange,提问作者sandy




