2012-12-03 38 views
1

因此,我上週對Android應用進行了更改,並且無意中在屏幕外部繪製了一些按鈕。Robotium - 檢測從屏幕上移出的物體

我能好起來看看在Eclipse中關閉屏幕的對象和被掀翻沒有錯誤,但是當應用程序運行的按鈕不可見(關閉屏幕)。

只是想將Robotium趕上這或將按鈕仍然是「可壓」。

我的問題是,鑑於上述情況,我運行一個Robotium測試來選擇不再裏面的畫面繪製/可見的按鈕。 Robotium仍然能夠選擇按鈕並通過測試,否則,由於該按鈕不再顯示在屏幕上,它會失敗嗎?

回答

0

據我所知,你可以按下按鈕,如果他們被吸引,即使他們是不可見的。例如,你可以在可滾動的視圖中按下按鈕,其中只有一些部分是可見的。 Robotium的重要之處在於可以在當前活動的視圖中找到想要單擊其中的按鈕(它以某種方式在內部遍歷視圖並在其子小部件中搜索小部件)。

+0

好的,所以我需要編寫檢查來查看按鈕x,y座標是否在屏幕邊界內? – conor

0

Robotium可以按按鈕關閉屏幕,但要看你如何搜索按鈕,它可能會或可能不會發現它。混淆權利?

Robotium內部有時會在返回視圖之前檢查視圖的可見性,例如,當你詢問所有的按鈕時,但如果你使用不同的技術或findById(),那麼它實際上不會執行相同的檢查。但是,您可以僅使用robotium內的可見性檢查來驗證它是否可見!

1

能見度

能見度選項斷言中包含一個片段。請注意,getVisibility將返回一個從0 = VISIBLE到8 = GONE且4 = INVISIBLE的整數。更多信息,請致電Android API Javadoc for View

int expectedValue = 0; // 0=VISIBLE, 4=INVISIBLE, 8=GONE 
assertEquals("Message when assert failed", expectedValue, 
    solo.getView(your.project.package.R.id.someViewId).getVisibility()); 

LocationOnScreen

能見度並不總是足夠的檢查,如果事情是可見或不可見屏幕上。從屏幕上拉出或以負值寬度顯示的東西可以是可見的。驗證您可以使用the getLocationOnScreen() method。它將返回屏幕上視圖的x和y座標(按此順序)。舉例:

int] location = new int[2]; // this will hold the x and y position 
// retrieve coordinates 
solo.getView(your.project.package.R.id.someViewId).getLocationOnScreen(location); 
// and check if possitive or whatever fits your needs 
assertTrue("Message when assert failed", location[0] >= 0 && location[1] >= 0); 

這應該正確地檢測到您的屏幕上的按鈕。

1

如果你試着點擊未繪製/可視屏幕上的按鈕,Robotium將失敗的測試用例。