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
テストされる側のソースコードです。.
テストする側のソースコードです。.