2016-12-05 56 views
2

我正在爲XCode 8編寫非常複雜的應用程序用戶界面測試。我發現了幾個問題,其中之一是我運行的每個測試需要幾分鐘的時間。Xcode 8用戶界面測試花費很長

我正在運行的特定測試的流程並非如此複雜。

我收到很多「等待應用程序閒置」消息。

有誰知道爲什麼測試需要這麼長時間才能運行,或者您對如何加速測試有何建議? WWDC演示基本上是即時的,但這是一個非常簡單的應用程序。

下面是我看到的一個例子,以及需要多長時間。 (該測試也還在運行!)

t = 504.16s   Wait for app to idle 
t = 625.29s   App animations complete notification not received, will attempt to continue. 
t = 625.30s   Synthesize event 
t = 625.67s   Wait for app to idle 

謝謝!

更新:當我稍微與應用程序交互時,同時保留需要可見的元素(例如通過拉取tableview),測試繼續進行。

+0

它是什麼,你的應用程序是在漫長的差距做運行測試? – matt

+0

@matt,我不太確定?它看起來像所有的意見加載。有一個設備同步運行,你認爲這可能嗎? – ArielSD

回答

2

感謝@Oletha - 我發現這個問題,這可能是特定於該應用程序:

一次刪除大量的代碼後,看看那裏的問題是,我們發現,我們分別致電beginRefreshingendRefreshingUIRefreshControl的子類上,在連續的行上。

有些東西阻止了用戶界面,足以讓應用程序在「等待應用程序閒置」幾分鐘。

我們用自定義方法替換了這兩行,現在測試正常運行。

+0

我也面臨這個問題。你能教我如何編寫自定義代碼嗎? – Newbie009

+0

你還遇到'beginRefreshing'和'endRefreshing'長時間滯後? – ArielSD

+1

是的,但我已經解決了。 – Newbie009

3

該框架將等待應用程序變爲靜態,因此如果有任何視圖是動畫或顯示任何活動指示器,可能包括狀態欄中的網絡活動指示器,框架將掛起,直到應用程序仍然存在。這是爲了防止在UI測試運行時加載動畫和組件的競爭條件。

如果您認爲可以重寫某些行爲以加速UI測試,那麼您可以嘗試嘗試刪除活動指示符。

+0

這似乎是一個非常好的主角 - 當我稍微與應用程序進行交互時,比如拉下桌面視圖,測試繼續進行。此外,網絡活動指示器將每三十秒運行一次,但即使不旋轉,測試仍然停滯。 你會如何重寫'isAnimating'屬性? – ArielSD

+0

我不是最好的人告訴你關於視圖中的動畫,但從我的理解,你可能想看看你如何處理你的應用程序中的動畫完成塊。看看他們是否正確完成?我認爲我誤解了isAnimating屬性,因爲它僅適用於UIImageView。去從我的答案中刪除那一點。 – Oletha

0

我有同樣的問題 - 在實際設備我會不斷地看到上「等應用閒置」

2個簡單的解決方案:

1)如果你的設備上運行,確保它仍然保持仍然(即不移動)。在拿着設備的同時運行測試,它總是等待應用程序閒置。平放在桌子上,測試運行良好。

2)另外,在可能的話模擬器