使用指南
UI 自动化

UI 自动化测试

PandaTest 支持的 UI 自动化测试框架

支持的框架

PandaTest 支持多种主流的 UI 自动化测试框架:

框架说明
Appium跨平台自动化框架,支持 Android 和 iOS
EspressoAndroid 原生 UI 测试框架,速度快、稳定性高
XCUITestiOS 原生 UI 测试框架
UiAutomator2Android 系统级 UI 自动化框架

框架对比

特性AppiumEspressoXCUITest
平台支持Android + iOSAndroidiOS
语言支持多语言Java/KotlinSwift/ObjC
执行速度中等
学习曲线中等
跨应用测试支持有限有限

Espresso 测试

项目配置

build.gradle 中添加依赖:

androidTestImplementation 'androidx.test.espresso:espresso-core:3.5.1'
androidTestImplementation 'androidx.test:runner:1.5.2'
androidTestImplementation 'androidx.test:rules:1.5.0'

编写测试

@RunWith(AndroidJUnit4::class)
class LoginTest {
    
    @get:Rule
    val activityRule = ActivityScenarioRule(LoginActivity::class.java)
    
    @Test
    fun testSuccessfulLogin() {
        // 输入用户名
        onView(withId(R.id.username))
            .perform(typeText("testuser"), closeSoftKeyboard())
        
        // 输入密码
        onView(withId(R.id.password))
            .perform(typeText("password123"), closeSoftKeyboard())
        
        // 点击登录
        onView(withId(R.id.login_btn))
            .perform(click())
        
        // 验证跳转到主页
        onView(withId(R.id.welcome_text))
            .check(matches(isDisplayed()))
    }
}

在 PandaTest 运行

  1. 构建测试 APK:./gradlew assembleAndroidTest
  2. 上传应用 APK 和测试 APK 到 PandaTest
  3. 选择目标设备并执行

UiAutomator2 测试

UiAutomator2 适合系统级 UI 测试,可以跨应用操作。

@RunWith(AndroidJUnit4::class)
class SystemTest {
    
    private lateinit var device: UiDevice
    
    @Before
    fun setup() {
        device = UiDevice.getInstance(InstrumentationRegistry.getInstrumentation())
    }
    
    @Test
    fun testOpenSettings() {
        // 按 Home 键
        device.pressHome()
        
        // 打开设置
        val settings = device.findObject(UiSelector().text("设置"))
        settings.click()
        
        // 验证设置页面打开
        val title = device.findObject(UiSelector().text("设置"))
        assertTrue(title.exists())
    }
}

测试报告

所有框架的测试结果都会生成统一格式的报告:

  • 执行结果:通过/失败/跳过数量、执行时间统计、成功率趋势
  • 失败分析:错误截图、堆栈信息、设备日志

最佳实践

选择合适的框架:

  • 需要跨平台?选 Appium
  • 只测 Android 且追求速度?选 Espresso
  • 需要系统级操作?选 UiAutomator2