是否可以同时在多个模拟器设备上进行 iOS XCUITesting?

Is it possible to do iOS XCUITesting on multiple simulator devices simultaneously?

我有一个应用程序,在生产中将在五个不同的设备上使用 MultipeerConnectivity 相互交谈。我有一个 bash 脚本,可以在五个不同的模拟器上启动应用程序。这很好用,但是每次我都必须在每台设备上点击很多按钮来测试所有内容。

所以我想也许 XCUITest 可以帮助实现自动化,并删除这些外部 bash 脚本依赖项(想在 Xcode/Swift 中完成所有事情)。我尝试了这样一种天真的方法:

func testExample() {
    // Use recording to get started writing UI tests.
    // Use XCTAssert and related functions to verify your tests produce the correct results.

  let app1 = XCUIApplication(bundleIdentifier: "com.madebymist.qdb-ios")
  let app2 = XCUIApplication(bundleIdentifier: "com.madebymist.qdb-ios")
  app1.launch()
  app1.buttons["Select Group"].tap()
  app1.sheets.buttons["Group one"].tap()
  app1.buttons["Host"].tap()

  // Launch and test App 2
  app2.launch()
  app2.buttons["Select Group"].tap()
  app2.sheets.buttons["Group one"].tap()
  app2.buttons["Join"].tap()

}

但这只是在同一个模拟器中一个接一个地启动应用程序。

那么,有什么方法可以在多个模拟器设备上同时实现 XCUITest 吗?(最好在 Xcode/Swift 内,但其他选项也可以)。

是的,因为 Xcode 10 你可以 运行 并行测试

  1. Select 您在 Xcode 和 "Edit Scheme..."
  2. 中的目标方案
  3. 找到 "Test" 的设置,然后按 "Info" 选项卡
  4. 您将看到您的单元列表和 UI 测试,按相关的 "Options..." 按钮
  5. Select "Execute in parallel on Simulator"
  6. 可选select"Randomize execution order"