You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过adb命令在多台设备上并行运行全部Espresso测试

在多台设备同时运行全量Espresso测试(基于adb instrument)

直接通过Shell脚本遍历已连接设备,后台执行adb shell am instrument命令即可实现,无需修改Gradle测试运行器配置(适配Allure场景),以下是具体方案:

核心实现思路

遍历所有已连接设备的ID,为每个设备单独启动后台进程执行测试命令,让所有设备同时跑完全量测试。

具体脚本示例

#!/bin/bash

# 创建日志目录(用于存储各设备的测试输出,避免混流)
mkdir -p test-logs

# 获取所有在线设备ID
DEVICE_LIST=$(adb devices | grep -v "List of devices attached" | awk '{print $1}')

# 遍历设备并启动测试
for DEVICE_ID in $DEVICE_LIST; do
  echo "启动测试:设备 $DEVICE_ID"
  # 替换为你的测试包名、Allure测试运行器类名,按需调整instrument参数
  adb -s $DEVICE_ID shell am instrument -w -r \
    -e debug false \
    com.your.app.package.test/io.qameta.allure.android.AllureAndroidJUnitRunner \
    > test-logs/$DEVICE_ID-results.log 2>&1 &
done

# 等待所有后台测试进程完成
wait
echo "所有设备测试执行完毕,结果请查看 test-logs/ 目录下的设备专属日志"

关键参数说明

  • -s $DEVICE_ID:指定当前命令作用的目标设备,确保多设备环境下命令不冲突
  • &:将测试命令放入后台执行,实现多设备并行
  • > test-logs/$DEVICE_ID-results.log 2>&1:将每个设备的测试输出重定向到单独日志文件,避免多设备输出混在一起
  • 若要跑全量测试,无需添加-e class参数;如需指定单类/单方法测试,添加-e class com.your.package.TestClass#testMethod即可

注意事项

  1. 确保所有设备已通过adb devices识别为在线状态
  2. 替换脚本中的测试包名和Allure测试运行器类名为你项目实际值(可从Gradle配置中找到对应的runner类)
  3. 若设备数量较多,可提前确认设备的性能状态,避免因资源不足导致测试卡顿

内容的提问来源于stack exchange,提问作者Madhu Pudota

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 11:38:14