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

时间:2017-01-26 11:51:11

标签: ios xcode 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"失败&#34。   UserInfo = {NSLocalizedDescription =要打开的请求   " no.something.bb.debug"失败。,NSLocalizedFailureReason =请求   服务代表(SBMainWorkspace)拒绝了原因:忙碌   ("应用程序" no.something.bb.debug"正在安装或卸载,   并且无法启动")。,BSErrorCodeDescription = RequestDenied,   NSUnderlyingError = 0x6080002598f0 {错误   Domain = FBSOpenApplicationErrorDomain Code = 6" Application   " no.something.bb.debug"正在安装或卸载,而不是   推出&#34。的UserInfo = {BSErrorCodeDescription =忙,   NSLocalizedFailureReason = Application" no.something.bb.debug"是   安装或卸载,无法启动。}}}

2 个答案:

答案 0 :(得分:4)

我遇到了同样的问题。我发现有一个rader打开这个。在评论中,我发现了一个我在一个重试函数中实现的提示。

arguments数组是一个枚举值数组,其中基类型为String。我用它作为app参数。

不幸的是,这还没有完全证明。在我的情况下,失败次数大幅下降,但没有消失。

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

答案 1 :(得分:1)

在玩完之后,我们观察到如果我们运行有限的测试用例,则此错误会大大降低。您可以在https://blog.talentica.com/2017/04/04/use-xcode-8-with-jenkins/

找到更多详细信息