2014-02-20 29 views
0

我正在測試的應用程序在安裝後第一次啓動時會顯示一個信息屏幕,並顯示一個「繼續」按鈕以解除消息。我想編寫一些測試,這些測試可以運行在第一次啓動(即從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的瞭解最多是最基本的。我在這裏不瞭解什麼?

+0

有文字「繼續」,但沒有文字「繼續」的按鈕? – maszter

+0

根據UI Automator查看器,在按鈕上有一個文本爲「繼續」的TextView。當信息屏幕顯示時,按鈕被solo.clickOnButton(「繼續」)激活。 – TimM

回答

0

我終於想通了什麼問題了。一旦我把整個assertTrue語句放在if條件而不是solo.waitForTextById中,它就開始按我的意願工作。這個問題是由於我對Java的經驗有限。

非常感謝大家爲您閱讀本文的幫助。

1

試試這個:

if (solo.searchText("Continue")) { 
solo.clickOnButton("Continue"); 
} 
+0

謝謝,但這也不起作用 – TimM

相關問題