如何在Jenkins配置Appium测试套件每日运行并自动启动Appium服务与模拟器
Maven+TestNG安卓Appium测试套件Jenkins自动运行配置方案
测试层内置自动启动逻辑(核心实现)
利用TestNG的套件级生命周期钩子实现测试前自动启动资源、测试后自动释放,无需额外写独立脚本调度。
- 首先确认项目已引入适配版本的
io.appium:java-client依赖,该依赖内置了Appium服务的编程式管理能力。 - 在测试套件的根配置类中添加
@BeforeSuite注解的启动方法,示例代码如下:
import io.appium.java_client.service.local.AppiumDriverLocalService; import io.appium.java_client.service.local.AppiumServiceBuilder; import org.testng.annotations.AfterSuite; import org.testng.annotations.BeforeSuite; import java.io.File; import java.io.IOException; public class TestBase { private static AppiumDriverLocalService appiumService; private static Process emulatorProcess; @BeforeSuite public void initTestResources() throws IOException, InterruptedException { // 提前杀掉残留进程避免端口/设备占用 new ProcessBuilder("bash", "-c", "lsof -i:4723 | grep -v PID | awk '{print $2}' | xargs kill -9 2>/dev/null || true").start().waitFor(); new ProcessBuilder("adb", "emu", "kill", "2>/dev/null || true").start().waitFor(); // 启动安卓模拟器,替换为你自己的AVD名称 emulatorProcess = new ProcessBuilder("emulator", "-avd", "test_avd", "-no-window", "-no-audio", "-no-boot-anim") .redirectErrorStream(true) .start(); // 等待模拟器启动完成,可替换为adb循环检测设备上线的逻辑,适配不同性能的节点 Thread.sleep(35000); // 启动Appium服务,可自定义端口、日志路径 AppiumServiceBuilder serviceBuilder = new AppiumServiceBuilder() .usingPort(4723) .withLogFile(new File("appium-runtime.log")); appiumService = AppiumDriverLocalService.buildService(serviceBuilder); appiumService.start(); } @AfterSuite public void releaseTestResources() throws IOException { // 测试结束后停止Appium服务 if (appiumService != null && appiumService.isRunning()) { appiumService.stop(); } // 关闭模拟器 if (emulatorProcess != null && emulatorProcess.isAlive()) { emulatorProcess.destroy(); } new ProcessBuilder("adb", "emu", "kill").start(); } }
- 所有测试类继承该
TestBase类即可,执行mvn test时会自动先执行资源启动逻辑。
Jenkins端配置
- 新建Jenkins项目,配置源码管理拉取测试代码仓库。
- 配置构建触发器,选择「定时构建」,日程表达式填写
0 2 * * *即可实现每日凌晨2点自动触发执行,可根据需求调整时间规则。 - 提前在Jenkins运行节点上配置好必备环境:Android SDK(配置
ANDROID_HOME环境变量)、Node.js、Appium服务、Maven,所有命令都要加入系统PATH中。 - 构建步骤添加Maven执行指令:
mvn clean test -DsuiteXmlFile=testng.xml,指定你自己的TestNG套件配置文件路径即可。 - 构建后操作可添加「Publish TestNG Results」插件,配置测试报告路径为
**/target/surefire-reports/testng-results.xml,方便直接在Jenkins上查看测试结果。
常见问题修复
- 无桌面Linux节点启动模拟器失败:必须加上
-no-window参数,同时开启CPU虚拟化支持提升启动速度。 - Appium端口冲突:每次启动前执行端口清理命令,或者每次启动随机生成可用端口,避免固定端口占用。
- 模拟器启动超时:将固定等待逻辑替换为循环执行
adb devices检测设备状态,直到设备显示为device状态再继续执行后续逻辑。
内容的提问来源于stack exchange,提问作者rakeshsahu59
相关产品推荐
相关产品推荐

