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

rac*_*hit 8 ui-automation ios xctest swift xctestcase

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

use*_*890 6

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

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

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

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

使用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()
}
Run Code Online (Sandbox Code Playgroud)

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

func myXCTest {

    XCUIDevice().press(XCUIDeviceButton.Home)

    Timer.scheduledTimer(timeInterval: 5.0, target: self, selector: #selector(launchApp), userInfo: nil, repeats: false)     
}
Run Code Online (Sandbox Code Playgroud)

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