ios – 将应用程序发送到后台并从XCTest中的最新版本重新启动它

我正在寻找我的问题的解决方案,我需要将我的应用程序发送到后台并在特定时间间隔后从最近重新启动它.
在仪器UIAutomation中使用deactivateAppForDuration()来实现这一点.
有人知道如何在XCTest中实现这一目标吗?

解决方法

如果这样可行,那就不好了,因为我还没有测试过,但它值得一试.如果没有别的,它应该让你知道在哪里看.

XCUIApplication类提供了以编程方式终止和启动应用程序的方法https://developer.apple.com/reference/xctest/xcuiapplication

XCUIDevice类允许您模拟设备上的按钮按下:https://developer.apple.com/reference/xctest/xcuidevicebutton

您可以将它们与UIControl和NSURLSessionTask一起使用来暂停您的应用程序.

使用Swift 3的这个过程的一个例子可能看起来像这样(Swift 2及以下语法可能略有不同):

func myXCtest() {

    UIControl().sendAction(#selector(NSURLSessionTask.suspend),to: UIApplication.shared(),for: nil)

    Timer.scheduledTimer(timeInterval: 5.0,target: self,selector: #selector(launchApp),userInfo: nil,repeats: false)   
}

func launchApp() {
    XCUIApplication().launch()
}

另一种方法可能是简单地执行主页按钮按下,然后在计时器通过后重新启动应用程序:

func myXCTest {

    XCUIDevice().press(XCUIDeviceButton.Home)

    Timer.scheduledTimer(timeInterval: 5.0,repeats: false)     
}

这些方式都不能满足您的要求,也不能完美地运作,但希望它能为您提供一个起点.您可以使用它并找到适合您的解决方案.祝好运!

相关文章

当我们远离最新的 iOS 16 更新版本时,我们听到了困扰 Apple...
欧版/美版 特别说一下,美版选错了 可能会永久丧失4G,不过只...
一般在接外包的时候, 通常第三方需要安装你的app进行测...
前言为了让更多的人永远记住12月13日,各大厂都在这一天将应...