Программная отправка приложения в фоновый режим

есть ли способ отправить приложение в фоновом режиме? Аналогично тому, как вы можете вызвать XCUIApplication.terminate(), У меня есть некоторые элементы пользовательского интерфейса для проверки на applicationDidBecomeActive(_:). Кто-нибудь знает, возможно ли это вообще?

3 ответов


Я бы рекомендовал проверить XCUIDevice. Вот как вы можете нажать кнопку "Домой", а затем перезапустить приложение

func testExample() {

    // Has a nav bar.
    XCTAssert(XCUIApplication().navigationBars.element.exists)

    XCUIDevice().press(XCUIDeviceButton.home)
    // Before Swift 3: XCUIDevice().pressButton(XCUIDeviceButton.Home)
    XCUIApplication().launch()

    // Navigationbar still there on second launch.
    XCTAssert(XCUIApplication().navigationBars.element.exists)
}

Я только что пытался UIApplication.sharedApplication().performSelector("suspend") успешно.

dispatch_after(2, dispatch_get_main_queue(), {       
    // suspend the app after two seconds
    UIApplication.sharedApplication().performSelector("suspend")
})

в Xcode 9.0, Apple представила XCUIApplication.activate(). activate() при необходимости запустит приложение, но не завершит его, если оно уже запущено. Таким образом:

func testExample() {
    // Background the app
    XCUIDevice().press(.home)
    // Reactivate the app
    XCUIApplication().launch()
}