TabActivityでTouchUtilsを使ったテストに関して

273 views
Skip to first unread message

@mitsuaki_i

unread,
Oct 2, 2011, 4:09:28 AM10/2/11
to 日本Androidの会
こんにちは。
@mitsuaki_iと申します。

表題(TabActivityでTouchUtilsを使ったテストに関して)につきまして
早速ですが質問させてください。


現在以下のようなテストケースを書いております。
※TabActivityを使用し、各タブの中身はListActivityで作っております。
//================================================
public void testPushList()
{
final View v = mActivity.findViewById(R.id.viewInTabHost);
mActivity.runOnUiThread(new Runnable() {
@Override
public void run() {
mActivity.getTabHost().setCurrentTab(1);
}
});
mInstrumentation.waitForIdleSync();

//View item = ???;//何らかの方法でタブの中身のListActivity内のViewを取得したい
//TouchUtils.tapView(this, item);// itemをタップしたい

TouchUtils.tapView(this, v);// これは特に問題ない
//assertEquals(true, true);
}

//================================================
現在選択されている(可能であれば選択されていない)タブの中身のView(やActivity)を取得する事は可能でしょうか?
是非ともご教授頂ければと思います。


お手数ですがよろしくお願いいたします。

@mitsuaki_i

unread,
Oct 2, 2011, 4:50:21 AM10/2/11
to 日本Androidの会
すみません。
一部自己解決いたしました。


以下のコードで選択されているタブのActivityを取得することができました。
//
========================================================================
ListActivity currentActivity = (ListActivity)
mActivity.getLocalActivityManager().getCurrentActivity();
//
========================================================================

ただ以下のように記述すると
//
========================================================================
ListActivity currentActivity = (ListActivity)
mActivity.getLocalActivityManager().getCurrentActivity();
View item = currentActivity.getListAdapter().getView(0, null, null);
TouchUtils.tapView(this, item);
//
========================================================================
以下のような例外が発生してしまいます。
//
========================================================================
java.lang.SecurityException: Injecting to another application requires
INJECT_EVENTS permission
//
========================================================================


tab内のActivityを直接起動してテストした時に上述の例外が発生し
どうにも回避できずTabを起動するようにしたのですが
振り出しに戻ってしまいました。


On 10月2日, 午後5:09, "@mitsuaki_i" <griffith1007challen...@gmail.com>
wrote:

@mitsuaki_i

unread,
Oct 11, 2011, 5:40:03 AM10/11/11
to 日本Androidの会
こちらですがちょっと前に自己解決しました。
結局イージーミスだったのですが念のため共有させて頂きます。


以下のコードで特に問題なくTouchUtilsを使用することが出来ました。

/*======================================================*/
public void testPushListByTouchUtils()
{
LinearLayout item = (LinearLayout)
mActivity.getListView().getChildAt(0);
//TouchUtils.tapView(this, item);// 画面に触れている状態
TouchUtils.clickView(this, item);// 画面から指が離れた状態
assertEquals(getFaceInListItem(item), getClipBoardText());
}
/*======================================================*/

原因はListViewにおいてitemが上手く指定できてなかっただけでした。(恥)
お騒がせしました。


On 10月2日, 午後5:50, "@mitsuaki_i" <griffith1007challen...@gmail.com>
wrote:
Reply all
Reply to author
Forward
0 new messages