2015-11-17 1 views
2

Определенная функция в моем приложении iOS Swift прекратит действие приложения, если сборка считается недействительной (устаревшая и т. Д.).Определение того, прекращено ли приложение с использованием тестов XCTest UI

Как использовать XCTest, чтобы определить, успешно ли завершилось приложение и вернул симулятор на рабочий стол?

Я пробовал очевидные способы, как

XCTAssertFalse(XCUIApplication().exists, "app should have quit") 

и

XCTAssertFalse(XCUIApplication().enabled, "app should have quit") 

, если я стараюсь и делать какие-либо операции на XCUIApplication зависание.

ответ

1

Вы можете зарегистрировать наблюдателя в NSNotificationCenter для UIApplicationDidEnterBackgroundNotification и в тестах, если сборка оказывается устареть, сделать тест исключение:

let expectation = expectationWithDescription("myDescription") 

waitForExpectationsWithTimeout(10) { error in 
} 

и в обработчике уведомлений:

func someHandler() { 
    expectation.fulfill() 
    //unregister the observer 
} 

Таким образом, если уведомление отправлено, ожидание будет выполнено, в противном случае тест завершится с ошибкой. Не забудьте установить этот случай только в том случае, если сборка устарела, иначе она будет всегда терпеть неудачу, если уведомление не будет отправлено.