XCTests не запускает приложение в симуляторе с перерывами
Кто-нибудь испытал и зафиксировал:
XCtests прерывается с перерывами для запуска приложения в симуляторе для тестирования пользовательского интерфейса (XCUI).
Я бегу через fastlane, по-разному возникают тесты, которые проваливают каждый тестовый прогон.
OSX: 10.12.3
iOS симулятор: 10.0
XCode 8.2.1
Fastlane 2.11.0
Попытка исправить это, добавив 3-х секундный спящий режим между установкой и запуском в моих тестах, но он по-прежнему появляется, может быть, не так часто, но все же...
Ошибка тестирования пользовательского интерфейса - отказ от попытки запуска: Ошибка домена = FBSOpenApplicationServiceErrorDomain Code = 1 "Запрос чтобы открыть" no.something.bb.debug "не удалось". UserInfo = {NSLocalizedDescription = запрос на открытие "no.something.bb.debug" не удалось., NSLocalizedFailureReason = Запрос был отклонен делегатом службы (SBMainWorkspace) по причине: Занят ( "Приложение" no.something.bb.debug "устанавливает или удаляет, и не может быть запущен" )., BSErrorCodeDescription = RequestDenied, NSUnderlyingError = 0x6080002598f0 {Ошибка Домен = FBSOpenApplicationErrorDomain Code = 6 "Приложение "no.something.bb.debug" устанавливается или деинсталлируется и не может быть запущен ". UserInfo = {BSErrorCodeDescription = Занято, NSLocalizedFailureReason = Приложение "no.something.bb.debug" является установка или удаление и не может быть запущена.}}}
Ответы
Ответ 1
У меня возникла одна и та же проблема. Я узнал, что для этого есть более открытый. В комментариях я нашел отзыв, который я реализовал в функции, которая выполняет повторную попытку.
Аргумент arguments - это массив значений перечисления, где базовый тип - String. Я использую это для аргументов приложения.
К сожалению, это еще не полное доказательство. В моем случае количество неудач значительно снизилось, но не исчезло.
var app: XCUIApplication = XCUIApplication()
public func tryLaunch<T>(_ arguments: [T], _ counter: Int = 10) where T: RawRepresentable {
sleep(3)
XCUIApplication().terminate()
sleep(3)
app = XCUIApplication()
app.launchArguments = arguments.map { $0.rawValue as! String }
app.launch()
sleep(3)
if !app.exists && counter > 0 {
tryLaunch(arguments, counter - 1)
}
}
Функция выше включена в https://github.com/evermeer/UITestHelper
Ответ 2
После игры мы заметили, что, если мы запускаем ограниченные тестовые примеры, эта ошибка значительно снизилась. Вы можете найти более подробную информацию на https://blog.talentica.com/2017/04/04/use-xcode-8-with-jenkins/