如何在模拟器和实际设备上 运行 CI 中的不同场景?

How do I run different scenarios in CI on emulator and on actual devices?

我们正在针对我们的 android 应用程序使用 calabash-android 到 运行 黄瓜方案。有些场景需要物理设备,而其他场景 运行 只需要模拟器即可。我们如何配置构建,以便在物理设备上标记为 @requires_device 运行 而在模拟器上不标记为 运行 的场景?

如果您使用 Jenkins 作为 CI 服务器,以下是我们针对真实设备制作 Calabash 运行 的步骤:

  • 创建slave,也就是本地机器
  • 将您的设备连接到此从机(多个设备应该也可以)
  • 构建你的 Jenkins 以 运行 在从机上执行 Calabash 的作业: ADB_DEVICE_ARG=device_id;calabash-android ...
    device_id 可以从 adb devices 命令
  • 中检索

由于模拟器也有一个 device_id,这种方法允许您选择模拟器或真实设备来 运行 所有测试。要 运行 在某些设备上进行选择性测试更加棘手,可能需要您 运行 单独的 calabash-android 命令。