27

ActivityInstrumentationTestCase2 クラスを使用して、アプリケーションの受け入れテストを作成しています。多くのことが確実に起こるように、テスト内からオリエンテーションを変更したいと考えています。これらのことの中には、Activity の状態が確実に保持されるようにすることも含まれますが、向きに適切なレイアウトが使用されるようにしたいとも考えています。

onSaveInstanceState/onRestoreInstanceState/onPause/onResume/etc を簡単にテストできることはわかっています。インスタンスの状態が保持されていることを確認するメソッド。しかし、実際に方向転換イベントを発生させる仕組みがあるのだろうか?

これには、何らかの種類のモーション イベントを挿入して、デバイス/エミュレーターが回転したと思わせるようにする必要がありますか?それとも、インストルメンテーションによって提供される実際の方法はありますか?

ありがとう&乾杯!

4

3 に答える 3

51

これには実際に Robotium を使用する必要はまったくありません。実際、Robotium のソースを表示すると、呼び出し時にすべてが実行されます。

solo.setActivityOrientation(Solo.LANDSCAPE);

myActivity = this.getActivity(); // In your setUp method()

...

myActivity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
于 2011-06-01T19:20:34.847 に答える
5

AndrewKSが書いたように、使用できます

getActivity().setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
assertTrue(...);

オリエンテーションの変更をリクエストします。ただし、ローテーション自体は非同期で実行されます。向きの変更後の状態を実際にテストするには、リクエストの後に少し待つ必要があります。

getActivity().setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
Thread.sleep(50); // depends on performance of the testing device/emulator
assertTrue(...);
于 2011-11-18T10:33:24.290 に答える
3

それにはRobotiumを使用してください。メソッドを呼び出すだけで方向を変更できる Solo というクラスがあります。

solo.setActivityOrientation(Solo.LANDSCAPE);

それでおしまい!あなたの向きが変わるでしょう。Robotium をググってその jar を取得し、テスト プロジェクトに追加することができます。Robotium サイトでは、Android のメモ帳アプリ (Android SDK のサンプル プロジェクトとして利用可能) のサンプル テスト プロジェクトも提供されており、その強力さと簡単な使用方法を示しています。

于 2010-12-30T11:56:15.103 に答える