簡體   English   中英

Robotium - 檢測從屏幕上畫出來的物體

[英]Robotium - detect objects drawn off screen

所以我上周對我的 Android 應用程序進行了更改,無意中將一些按鈕繪制到了屏幕之外。

我可以在 Eclipse 中看到屏幕外的對象,並且沒有拋出任何錯誤,但是當應用程序運行時,按鈕不可見(屏幕外)。

只是想知道 Robotium 會捕捉到這個還是按鈕仍然可以“按下”。

我的問題是,鑒於上述情況,我運行 Robotium 測試以選擇一個不再在屏幕內繪制/可見的按鈕。 Robotium 是否仍然能夠選擇按鈕並通過測試,還是會因為按鈕不再出現在屏幕上而失敗?

能見度

可見性選項使用如下代碼段斷言。 請注意,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());

屏幕位置

可見性並不總是足以檢查屏幕上是否可見。 從屏幕上或負寬度繪制時可以看到某些內容。 驗證您是否可以使用getLocationOnScreen() 方法 它將返回屏幕上視圖的 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);

這應該可以正確檢測到您的屏幕外按鈕。

如果您嘗試單擊屏幕上未繪制/不可見的按鈕,Robotium 將使測試用例失敗。

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

Robotium 可以按下屏幕外的按鈕,但取決於您搜索按鈕的方式,它可能會也可能不會找到它。 混淆對嗎?

Robotium 有時會在內部檢查視圖的可見性,然后再返回它們,例如當您要求所有按鈕時,但如果您使用不同的技術或 findById() 那么它實際上不會執行相同的檢查。 但是,您可以僅使用機器人內部的可見性檢查來驗證它是否可見!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM