解決當手機進入休眠模式而讓 Android uiautomator 自動化測試可能造成 fail 的問題

最近透過 Jenkins Continuous Integration (CI) server 週期性的執行自動化測試,在執行的測試案例偶然就會發生全部 fail 的情況,此時看了寫的自動化程式的測試案例程式,看起來也都沒什麼問題,也自己實際拿不同的手機執行一下測試也都沒什麼問題,跑起來測試都可以正常的通過測試。

心裡就想著那到底會是什麼原因所導致? 想了好久還是想不出原因來…

此時我無意間發現一個狀況發生時,執行自動化測試案例就很容易發生錯誤,這個狀況居然是當手機的螢幕如果是休眠的狀態下執行測試案例,就很有可能就會出現 fail。

因為當手機螢幕如果是休眠的狀態下,我們執行測試案例,測試平台的螢幕是會自動開啟沒錯,但如果你的測試案例一開始就要點擊畫面中某的按鈕元件,可是要開啟螢幕還是有一點時間差,在這個時間差裡我們執行的點擊動作就會無作用,因而導致往後的測試全部失敗。

以下兩種方法是我想到的兩個解決方式提供給大家做參考:

方法 1: 讓手機螢幕一直開著,讓它不要進入休眠模式。進入「設定」 -> 「開發人員選項」 -> 開啟 「保持清醒」,如下圖所示,這樣設備連接 USB 充電就可讓螢幕一直開啟而不會進入休眠模式。

device-2014-07-14-192221

方法 2: 執行測試案例前,先讓螢幕喚醒。我們可以在執行測試案例前呼叫 wakeUp() 函式,程式碼如下所示:

/*
This method simulates pressing the power button if the screen is OFF
else it does nothing if the screen is already ON.
*/

getUiDevice().wakeUp();

最後我是採用方法 2,會選擇該方法的原因是考量到我們在測試時會換不同設備測試,如果換上的設備忘了到「開發人員選項」 -> 開啟 「保持清醒」就很容易有問題,二來也可減少耗電量不要讓手機螢幕整天都一直開著。

 

參考資料: UiDevice | Android Developers

廣告

發表迴響

Please log in using one of these methods to post your comment:

WordPress.com Logo

您的留言將使用 WordPress.com 帳號。 登出 / 變更 )

Twitter picture

您的留言將使用 Twitter 帳號。 登出 / 變更 )

Facebook照片

您的留言將使用 Facebook 帳號。 登出 / 變更 )

Google+ photo

您的留言將使用 Google+ 帳號。 登出 / 變更 )

連結到 %s