我正在測試的應用程序在安裝後第一次啓動時會顯示一個信息屏幕,並顯示一個「繼續」按鈕以解除消息。我想編寫一些測試,這些測試可以運行在第一次啓動(即從APK以JUnit運行時)或後續啓動(即直接JUnit)時運行。我試圖用我能想到的,比如最簡單的條件......爲什麼我的機器人測試用例中沒有條件工作?
if (solo.waitForText("Continue", 20000)) {
solo.clickOnButton("Continue");
}
下一步....
測試將通過,如果「繼續」按鈕會出現(從APK測試運行),但失敗時(按照clickOnButton的ADK),當按鈕不存在時(直接運行JUnit)。我究竟做錯了什麼?
2/21/14
也許我應該重新開始。
我正在測試的應用程序在安裝後第一次啓動時顯示一個信息屏幕,用「繼續」按鈕來解除。該屏幕不會在隨後的應用程序啓動中顯示。我想編寫一些測試,這些測試可以運行在第一次啓動(即從APK以JUnit運行時)或後續啓動(即直接JUnit)時運行。我用Testdroid,這將打開該測試記錄行動開始這個測試:
public void testRecorded() throws Exception {
try {
solo.waitForActivity("splash");
solo.waitForActivity("Login");
assertTrue(
"Wait for text (id: com.<app identified>.R.id.continue_txt) failed.",
solo.waitForTextById(
"com.<app identified>.R.id.continue_txt", 20000));
solo.clickOnText((TextView) solo
.findViewById("com.<app identified>.R.id.continue_txt"));
這個工作,只要運行測試(從APK運行),但是,顯然之前的應用程序重新安裝,失敗的隨後啓動(作爲直接JUnit運行),因爲屏幕從不顯示。我試圖封閉waitForTextById和clickOnText語句「如果」條件,並沒有工作,所以我試圖簡化爲
if (solo.waitForText("Continue", 20000)) {
solo.clickOnButton("Continue");}
,然後試圖
if (solo.searchText("Continue")) {
solo.clickOnButton("Continue");}
無論這些工作的,無論是。根據Eclipse的說法,測試失敗時,它不能點擊按鈕(因爲按鈕不在那裏)。我對Java的瞭解最多是最基本的。我在這裏不瞭解什麼?
有文字「繼續」,但沒有文字「繼續」的按鈕? – maszter
根據UI Automator查看器,在按鈕上有一個文本爲「繼續」的TextView。當信息屏幕顯示時,按鈕被solo.clickOnButton(「繼續」)激活。 – TimM