2011-02-07 36 views
3

我正在編寫一個UI測試用例(使用ActivityUnitTestCase),並希望檢查給定時間View子類是否對用戶可見。我發現了視圖#isShown()方法,它聲稱要做到這一點 - 檢查此元素及其所有父母的可見性字段 - 但不知何故,它始終返回所有元素的「false」。我會很感激一些幫助。如果它更容易,我可以粘貼一些代碼。在Android測試中,如何檢查顯示的視圖?

此外,我發現ViewAsserts#assertOnScreen(查看起源,查看視圖)但它似乎並沒有做正確的事情 - 總是返回true。我可能稱它錯了:assertOnScreen(viewImTesting.getRootView(),viewImTesting)?

感謝, 揚

+1

Ping - Android專家 - 任何線索? :) – 2011-02-10 14:53:42

回答

2

我找到了一個合理的解決方法:只檢查查看#getVisibility()查看#可見VIEW#隱形,或VIEW#GONE

這可能不起作用,例如,父視圖不可見,但是這個視圖設置爲可見,但對於大多數情況下它應該就足夠了。

0

嘗試使用

final View origin = activityImTesting.getWindow().getDecorView(); 
android.test.ViewAsserts.assertOnScreen(origin, viewImTesting); 
+0

不行,恐怕..謝謝你的答案。 – 2011-03-16 15:38:34

+1

關於它不起作用的一些細節? – 2011-03-16 17:23:07

0

也許這是爲時已晚?只是爲了引發@dtmilano和其他Android專家的迴應,似乎「可見」的可見性解釋存在一些差異。

雖然能見度=消失了listed就好像一個視圖完全沒有添加,但這個definition可能更接近事實。我意識到它實際上仍然在斧頭和y座標屏幕上,但寬度和高度將爲0.

而當我挖掘ViewAsserts.java時,assertOnScreen()只關心視圖的y座標在原點確保它大於0但不超過原點的高度。

總結:如果您正在測試視圖的可見性,那麼assertOnScreen可能不是正確的方法,我認爲這是您根據您的問題所做的嘗試。

希望以上信息有用(正確)!

相關問題