Intermittent “Failure attempting to launch” in ios

2019-03-28 08:59发布

问题:

I see this about 1/10 times with my UI Tests on Xcode7.3/iOS9.3

Test Case '-[WhatevUITests.RegistrationUITests testVerifyUnsupportedPhoneNumberAlert]' started.
    t =     0.00s     Start Test
    t =     0.00s     Set Up
    t =     0.01s         Launch me.jackpine.whatev-dev
    t =     0.11s             Terminate <XCUIApplicationProcess: 0x7ff91a712550 me.jackpine.whatev-dev (94280)>
    t =     1.14s             Assertion Failure: UI Testing Failure - Failure attempting to launch <XCUIApplicationImpl: 0x7ff91a49fae0 me.jackpine.whatev-dev at /Users/mkirk/src/jackpine/Whatev-iOS/build/Whatev/Build/Products/Debug-iphonesimulator/Whatev Dev.app>, nil token for current process reference <XCUIApplicationProcess: 0x7ff91a624440 me.jackpine.whatev-dev (94333)>
/Users/mkirk/src/jackpine/Whatev-iOS/WhatevUITests/RegistrationUITests.swift:16: error: -[WhatevUITests.RegistrationUITests testVerifyUnsupportedPhoneNumberAlert] : UI Testing Failure - Failure attempting to launch <XCUIApplicationImpl: 0x7ff91a49fae0 me.jackpine.whatev-dev at /Users/mkirk/src/jackpine/Whatev-iOS/build/Whatev/Build/Products/Debug-iphonesimulator/Whatev Dev.app>, nil token for current process reference <XCUIApplicationProcess: 0x7ff91a624440 me.jackpine.whatev-dev (94333)>
    t =     1.15s             Tear Down

I'm not sure what it means. Often I can rerun the test and it will complete without issue.

回答1:

I had this issue with Xcode 8.3.2 and iOS 10.3 Simulator. All of the tests started failing after updating the Mac OS to Sierra.

We would see the above exception at:

XCUIApplication().launch()

and the first time the test tries to access the XCUIApplication() it crashes.

The fix was to move the XCUIApplication().launch() call to the setUp() function.

Background

In our case the problem was multithreading. We wanted to make sure some other code was executed before the app started. That code ran asynchronous and started the app once it returned. The fix makes sure that the app is launched first and on the main thread. Now everything works fine again.