2012年1月3日火曜日

ActivityInstrumentationTestCase2 GridView Select View

AndroidのActivityInstrumentationTestCase2 Classを
使用したJUnitのテストコードの説明です。
GridViewで作られたViewのテストをするようにします。

最初にテストされる側のActivityの説明をします。
前に、GridViewでSDCardのビデオクリップを表示する
サンプルの説明をしたので、基本的な部分はそちら
参照してください。

GridViewに、OnClickListener()を設定します。
OnClickListener()では、どの画像(ImageView)がClickされているか
わからないので、コンストラクタでpositionを引数とした
OnClickListenerのサブクラスを作ります。


class OnClickListenerDetectPosition implements OnClickListener {
 private int mPosition = 0;
 public OnClickListenerDetectPosition(int position ) {
  mPosition = position;
 }
 @Override
 public void onClick(View v) {
  Log.d("GridViewActivity", "onClick = " + mPosition);
 }
 
}
OnClickListenerDetectPositionをGridViewに設定します。
OnClickListener onclikclistener = new OnClickListenerDetectPosition(position);
imageView.setOnClickListener(onclikclistener);

次に、テストする側のクラスを説明します。
ActivityInstrumentationTestCase2のサブクラスを作成します。
UIThread上からsetPosition()を使用してpositionを変更します。
mActivity.runOnUiThread(new Runnable() {
 public void run() {
  Log.d("GridViewActivity", "setSelection 2");
  gridview.setSelection(2);
 }
});
mInstrumentation.waitForIdleSync();

次に、getSelectedView()で、選択されているViewを取り出し、performClickを使用して、
クリックする動作をテストします。
mActivity.runOnUiThread(new Runnable() {
 public void run() {
  
  Log.d("GridViewActivity", "getSelectedItemPosition = " + gridview.getSelectedItemPosition ());
  
  Log.d("GridViewActivity", "getSelectedView");
  ImageView imageview = (ImageView)gridview.getSelectedView();
  Log.d("GridViewActivity", "performClick");
  imageview.performClick();
 }
});
Logcatを使用して動作を確認します。テストする側からperformClickすることで、テストされる側のOnClickListenerDetectPosition クラスが動作できたことがわかります。
setSelection 2
getSelectedItemPosition = 2
onClick = 2
   テストされる側のソースコードです。.
  テストする側のソースコードです。.

0 件のコメント:

コメントを投稿