XCTests无法间歇性地在模拟器中启动应用程序

Dav*_*son 18 xcode ios xctest fastlane

有没有人经历和修复:

XCtests间歇性地在模拟器中启动应用程序进行UI测试(XCUI)失败.我正在运行fastlane,不同的测试似乎在每次测试运行时失败.

OSX:10.12.3 iOS模拟器:10.0 XCode 8.2.1 Fastlane 2.11.0

尝试通过在我的测试中在设置和启动之间添加3秒睡眠来修复它,但它仍然出现,可能不是经常但仍然......

UI测试失败 - 尝试启动失败:错误域= FBSOpenApplicationServiceErrorDomain代码= 1"打开"no.something.bb.debug"的请求失败." UserInfo = {NSLocalizedDescription =打开"no.something.bb.debug"的请求失败.,NSLocalizedFailureReason =服务委托(SBMainWorkspace)拒绝了请求原因:Busy("Application"no.something.bb.debug"is安装或卸载,并且无法启动").,BSErrorCodeDescription = RequestDenied,NSUnderlyingError = 0x6080002598f0 {Error Domain = FBSOpenApplicationErrorDomain Code = 6"Application"no.something.bb.debug"正在安装或卸载,无法启动." UserInfo = {BSErrorCodeDescription = Busy,NSLocalizedFailureReason = Application"no.something.bb.debug"正在安装或卸载,无法启动.}}}

Edw*_*eer 3

我遇到了同样的问题。我发现有一个雷达为此开放。在评论中,我发现了一个在重试函数中实现的提示。

参数数组是枚举值数组,其中基本类型为 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)
    }
}
Run Code Online (Sandbox Code Playgroud)

上面的函数包含在https://github.com/evermeer/UITestHelper中