2017-01-26 3 views
17

Кто-нибудь опытное и неподвижное:XCTests неудовлетворительного запустить приложение в симуляторе периодически

XCtests провал попытку с перерывами, чтобы запустить приложение в симуляторе для тестирования пользовательского интерфейса (XCUI). Я бегу через fastlane, различные тесты, кажется, терпят неудачу при каждом испытании.

OSX: 10.12.3 IOS симулятор: 10,0 XCode 8.2.1 Fastlane 2.11.0

Пытался исправить путем добавления 3 секунды сна между установкой и запуском в моих тестах, но он по-прежнему появляется , может быть, не так часто, но все-таки ...

UI Тестирование Failure - Отказ при попытке запуска : Error Domain = FBSOpenApplicationServiceErrorDomain Code = 1 «запрос открыть "no.something.bb.debug" не удалось «. UserInfo = {NSLocalizedDescription = При запросе на открытие "no.something.bb.debug" не удалось, NSLocalizedFailureReason = Запрос было отказано службы делегата (SBMainWorkspace) по причине:. Busy ("Application" no.something.bb .debug "является установка или удаление, и не может быть запущен")., BSErrorCodeDescription = RequestDenied, NSUnderlyingError = 0x6080002598f0 {Ошибка Domain = FBSOpenApplicationErrorDomain Code = 6 «Применение "no.something.bb.debug" является установка или удаление , и не может быть запущен . " UserInfo = {BSErrorCodeDescription = Занято, NSLocalizedFailureReason = Application "no.something.bb.debug" является установка или удаление, и не может быть запущен.}}}

+0

Работает ли ваш тест UI, когда вы запускаете его из Xcode вместо того, чтобы запускать его непосредственно из Fastlane? – HardikDG

+0

@HardikDG В моем случае тесты на локальной машине с использованием XCode всегда преуспевают, но при запуске на Mac Mini с использованием сервера XCode каждый тест имеет вероятность около 3%, что он потерпит неудачу. так как у нас более 200 тестов UI, сборка на сервере почти всегда терпит неудачу. (У нас было 1 успешное построение за 2 недели) –

+0

Обновление машины до SSD и разрешение 5 сбоев удалили большинство ошибок, иногда мы их видим, но не так часто ... (только 5 попыток не помогли, но сочетание обновления + повторов). –

ответ

4

я испытал те же проблемы. Я узнал, что для этого есть более открытый. В комментариях я нашел отзыв, который я реализовал в функции, которая выполняет повторную попытку.

Аргумент аргументов представляет собой массив значений перечисления, где базовым типом является 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

+0

см. Https://github.com/lionheart/openradar-mirror/issues/16226 и https://openradar.appspot.com/29735288 –

+1

Отличное решение, даже если оно не является полным доказательством @Edwin. Кажется, уменьшилось количество «Error Domain = FBSOpenApplicationServiceErrorDomain Code = 1». Запрос на открытие «com.apple.test».SomeTest-Runner "Я получаю. – JJacquet

1

После игры вокруг мы наблюдали, что если мы запустим ограниченные тестовые случаи, эта ошибка значительно снизилась. Вы можете найти более подробную информацию по адресу: https://blog.talentica.com/2017/04/04/use-xcode-8-with-jenkins/

Смежные вопросы