2016-01-04 36 views
2

後空閒我有一個視圖控制器,將通過等待應用程序中斷

if ([CLLocationManager authorizationStatus] == kCLAuthorizationStatusNotDetermined) 
{ 
    [_locationManager requestWhenInUseAuthorization]; 
} 

這會觸發「允許在您使用應用程序來訪問你的位置?」請求訪問的初始化定位服務 - 警報。

我用[self addUIInterruptionMonitorWithDescription:handler:]對此做出反應。我遇到以下問題:解除請求對話框後,ui-test不會繼續。警報被駁回,但Xcode中等待應用程序成爲空閒,但它看起來像應用程序空閒:

t = 67.35s    Wait for app to idle 

測試失敗,因爲應用程序被困在這裏。如果我點擊模擬器,Xcode記錄。

t = 72.27s   Synthesize event 

並繼續測試。

是否有原因,爲什麼Xcode試圖等待應用程序?解決方法似乎是告訴Xcode用戶界面已更改或事件發生。有沒有辦法觸發這個?

+0

附加信息:解除推送通知警報確實很好... – Tobias

回答

9

提出警報後,您必須必須與接口交互。這是Xcode 7.2的一個已知錯誤。只需輕點應用程序就可以工作,但這是必需的。

addUIInterruptionMonitorWithDescription("Location Dialog") { (alert) -> Bool in 
    alert.buttons["Allow"].tap() 
    return true 
} 

app.buttons["Find Games Nearby?"].tap() 
app.tap() // need to interact with the app for the handler to fire 
XCTAssert(app.staticTexts["Authorized"].exists) 

查看my blog post瞭解更多信息。

+0

感謝您的幫助。事實上,我知道你的博客文章,並試圖使用這個,但在中斷監視器之後,竊聽不起作用,因爲Xcode認爲,應用程序不是空閒的。 '測試失敗 - 應用程序未能在30秒內停頓'測試將失敗 – Tobias

+0

有趣。這聽起來像你的應用中可能還有其他事情正在導致框架認爲它沒有響應。該方法中是否還有其他事情發生,也許在主線程中? –

+0

我在viewControllers的init中請求權限。在等待時,MKMapSnapshot完成(在給定的座標上,而不是用戶位置)並添加到UITableView。 TableView然後被重新加載。 Refreshcontrol停止。然後用戶/測試點擊「允許」,焦點返回到ViewController。 – Tobias