Можно ли выполнить iOS XCUITesting на нескольких устройствах-симуляторах одновременно?

У меня есть приложение, которое в производстве будет на пяти разных устройствах, разговаривая друг с другом с помощью 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, но подойдут и другие варианты).


person eivindml    schedule 09.11.2018    source источник


Ответы (1)


Да, с Xcode 10 вы можете запускать параллельное тестирование

  1. Выберите вашу целевую схему в Xcode и "Edit Scheme ..."
  2. Найдите настройки для «Тест» и нажмите на вкладку «Информация».
  3. Вы увидите список своих модульных и пользовательских тестов, нажмите соответствующую кнопку «Параметры ...».
  4. Выберите «Выполнять параллельно на симуляторе».
  5. При желании выберите «Случайный порядок выполнения»

«Параметры»

person Community    schedule 09.11.2018
comment
Отлично, спасибо. Есть ли способ приостановить приложения, чтобы продолжить ручное тестирование пользовательского интерфейса? Прямо сейчас я просто использую sleep(1000), но это уродливые хаки. - person eivindml; 10.11.2018
comment
А чтобы другие видели это, чтобы одновременно работало несколько симуляторов, вам нужно создать новый класс XCUITest для каждого симулятора. Так что просто продублируйте существующий тестовый класс, а затем Xcode создаст дубликаты клонов выбранного вами симулятора. - person eivindml; 10.11.2018
comment
@eivindml Думаю, вам стоит задать еще один вопрос о продолжении автоматического тестирования пользовательского интерфейса вручную;) - person Mojtaba Hosseini; 11.11.2018
comment
Похоже, устройств максимум три. Пытаюсь запустить одновременно пять, а открываются только три. - person eivindml; 11.11.2018