1

そのため、先週 Android アプリに変更を加えたところ、誤っていくつかのボタンが画面外に描画されてしまいました。

Eclipse でオブジェクトを画面外に表示でき、エラーはスローされませんでしたが、アプリを実行するとボタンが表示されませんでした (画面外)。

Robotiumがこれをキャッチするのか、それともボタンがまだ「押せる」のか疑問に思っています。

私の質問は、上記のシナリオを考えると、Robotium テストを実行して、画面内に描画/表示されなくなったボタンを選択することです。Robotium は引き続きボタンを選択してテストに合格できますか?それとも、ボタンが画面に表示されていないために失敗しますか?

4

4 に答える 4

1

画面に描画されていない/表示されていないボタンをクリックしようとすると、Robotium はテスト ケースに失敗します。

于 2013-01-30T09:44:08.760 に答える
1

視認性

可視性オプションは、以下のようなスニペットでアサートされます。getVisibility は、0=VISIBLE から 8=GONE までの整数と 4=INVISIBLE を返すことに注意してください。詳細については、View の Android API Javadoc を参照してください。

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);

これにより、オフスクリーン ボタンが正しく検出されます。

于 2013-01-29T12:38:41.783 に答える
0

Robotium は画面外のボタンを押すことができますが、ボタンの検索方法によっては、ボタンが見つからない場合があります。紛らわしいですよね?

Robotium は、すべてのボタンを要求する場合など、ビューを返す前にビューの可視性を内部的にチェックすることがありますが、別の手法または findById() を使用すると、実際には同じチェックを実行しません。ただし、Robotium の内部にある可視性チェックを使用して、それが可視かどうかを検証することができます!

于 2012-12-03T15:31:37.477 に答える
0

私の知る限り、ボタンが表示されていなくても、ボタンが描画されていれば押すことができます。たとえば、一部のみが表示されているスクロール可能なビューでボタンを押すことができます。ロボティウムにとって重要なことは、現在のアクティビティのビュー内のどこかでクリックしたいボタンを見つけることができるということです (何らかの方法で内部的にビューをトラバースし、すべてのサブウィジェットでウィジェットを検索します)。

于 2012-12-03T13:17:21.640 に答える