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)     
}

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

相关文章

UITabBarController 是 iOS 中用于管理和显示选项卡界面的一...
UITableView的重用机制避免了频繁创建和销毁单元格的开销,使...
Objective-C中,类的实例变量(instance variables)和属性(...
从内存管理的角度来看,block可以作为方法的传入参数是因为b...
WKWebView 是 iOS 开发中用于显示网页内容的组件,它是在 iO...
OC中常用的多线程编程技术: 1. NSThread NSThread是Objecti...