2010-10-12 45 views
1

我剛剛開始使用Robotium並嘗試了第一個非常簡單的測試,但遇到了一些我無法解釋的問題/對我來說似乎並不合邏輯。Robotium測試失敗:junit.framework.AssertionFailedError:無法單擊視圖!

我有一個TabHost與一個ActivityGroup和切換按鈕上顯示在tabhost內容部分中的每個活動。當我按下切換按鈕時,標籤內容區域變爲另一個活動(mTabHost.setCurrentTab(Intent intent);)。每個活動都有一個這樣的切換按鈕,總是帶有「切換」標籤。當我點擊秒活動上的切換按鈕時,它將切換回第一個(全部在標籤內容區域內)。

|-----------------| 
| TabHost |  | 
|-----------------| 
|     | 
| Toggle-Button | 
|     | 
| (ActivityGroup: | 
| Activities  | 
| change in here) | 
|     | 
|-----------------| 

現在,手動這一切工作正常,但robotium測試沒有。當我嘗試點擊第二個活動的切換按鈕時,出現錯誤消息「junit.framework.AssertionFailedError:View can not be clicked!」

這是我的測試 - 非常簡單和小:

solo.sleep(5000); 
    solo.waitForActivity("StartTabsActivity", 10000); 

    solo.clickOnButton("Toggle"); 
    // this will swap the activity inside the tabhost content section 

    solo.sleep(5000); 
    solo.waitForActivity("StatusListActivity", 5000); 

    solo.assertCurrentActivity("Expected StatusList activity", "StatusListActivity"); 

    LogUtils.logD("robotium: button label: " + solo.getButton(1).getText()); 
    // ... outputs: robotium: button label: Toggle 

    LogUtils.logD("robotium: button clickable: " + solo.getButton(1).isClickable()); 
    // ... outputs: robotium: button clickable: true 

    solo.clickOnButton("Toggle"); 
    // ... throws: junit.framework.AssertionFailedError: View can not be clicked! 

什麼我不明白這裏:我檢查,與「切換」按鈕標籤存在並且是可點擊的,不過,我m出現錯誤,提示「此視圖無法點擊」。當前活動中只有一個「切換」按鈕。

與此相關的問題,我有另一個小一個: 當我與TabHost +的ActivityGroup工作,將「solo.getCurrentActivity()」總是返回的ActivityGroup的嵌入式活動,而不是外一個?單獨仍然可以訪問外部活動的元素? 在我上面的例子中,切換按鈕始終是內部/嵌入式活動的一部分 - 在這裏很重要。

+0

這是一種替代方法用instumentation點擊按鈕。 http://chanakaudaya.wordpress。com/2012/03/31/robotium-button-click-not-working-solution/ – 2012-03-31 15:14:50

回答

2

剛剛從robotium dev回覆,這是一個將在Robotium 1.8中解決的問題。請參閱Here

0

相反,您可以使用由Android提供的JUnit自身。您可以輕鬆發送KeyEvents來選擇菜單選項&完成任務。

您需要做的就是在測試代碼中創建一個JUnit測試用例方法,用於選擇菜單選項。下面按照以下方法: - 在測試方法

  • 發送KeyEvent的菜單點擊活動

    • 發射活動。當顯示菜單選項時,發送向上,向下,向左&右側按鍵事件將焦點放在選項&上發送keyevent DPAD CENTER。

    希望這個井能解決您的問題。但是在這之前,你必須知道一點在Android SDK中提供的JUnit &測試框架的..

  • +0

    自1.8以來已經修復,而robotium現在已經在2.1。我認爲實施Robotium在JUnit中提供的功能將付出太多努力,我的意思是爲什麼存在這樣的測試框架是有原因的。無論如何,問題已經解決了一段時間。乾杯。 – 2011-01-31 12:37:07

    +0

    是的,你們是對的。我在幾個月前拿起Robotium,我真的很享受它提供的力量。 JUnit的等效努力將會是巨大的。 – Neo 2012-03-07 12:31:44

    1

    您可以使用此一:

    solo.clickOnView(solo.getView("Toggle")) 
    

    或:

    solo.clickOnView(solo.getView(R.id.B))