2016-02-14 98 views
2

我正在嘗試第一次爲基於沙盒,基於NSDocument的OSX應用程序目標運行UI測試,並且我遇到了Xcode 7.2.1和7.3 beta 3兩個版本的問題, XCUIApplication().launch()調用在設置階段卡住,並最終超時與下面的錯誤消息,雖然應用程序實際上處於可運行狀態,並正常工作記錄測試步驟等XCUIApplication()。launch()永不完成

我看到的錯誤消息如下所示: UI Testing Failure - App state is still not running, state = XCApplicationStateNotRunning

我沒有定製任何方式測試的設置階段。相關上市調用如下:

let app = XCUIApplication() app.launch()

任何想法?是否有方法強制通知XCUIApplication實例的新狀態,或者發送通知,或者它正在代理應用程序中偵聽的任何通知?

我可以看到(和還我自己的評論來)上看起來是一樣的問題,這個開發者論壇發帖:https://forums.developer.apple.com/thread/30390

注:我報告說,這個是雷達中的錯誤,併發送回一個反應暗示了Xcode 7.3 beta版的晚期版本可以解決這個問題。事實上,這個Xcode錯誤已經修復,並且在使用Xcode 7.3運行我的UI測試時不會再出現問題,至少對於我用我的應用程序命中的場景來說!

+0

我會很好奇爲什麼這個問題被標記爲-1而沒有解釋? – mz2

+0

這是一個真正的問題,我也不明白倒票。 – ishaq

+1

我有同樣的問題,但這是因爲我的應用程序是一個菜單欄應用程序,所以我必須啓用「應用程序是代理(UIElement)」。我想這不是你的情況,是嗎? – Gaston

回答

2

我也遇到過這個問題,特別是在使用機器人運行UI測試時。由於之前的測試沒有正確關閉,所以其他測試都會因此錯誤而失敗。

爲了避免這種情況,在您的測試設置階段,添加以下行:

XCUIApplication().terminate()

因此,您的設置功能將類似於以下內容:

override func setUp() { 
     XCUIApplication().terminate() 

     super.setUp() 

     continueAfterFailure = false 
     XCUIApplication().launch() 
    } 

這是一個因爲終止命令也在override func tearDown函數中,但應確保正確的測試環境。

+0

我很高興地告訴大家,至少在影響到我的情況下,Xcode 7.3 final現在可以解決這個問題,而沒有采取這種解決方法(我之前證實的問題也是在問題出現時才起作用)! – mz2