@blog.justoneplanet.info

日々勉強

androidでTouchUtilsを使ってテストをする

以下のようにしてTouchUtilsを使用することができる。

public void testPushListByTouchUtils()
{
    LinearLayout item = (LinearLayout) mActivity.getListView().getChildAt(0);
    //TouchUtils.tapView(this, item);// 画面に触れている状態
    TouchUtils.clickView(this, item);// 画面から指が離れた状態
    String face = (String) ((TextView) item.findViewById(R.id.list_face)).getText();
    ClipboardManager cm = (ClipboardManager) mActivity.getSystemService(Context.CLIPBOARD_SERVICE);
    assertEquals(face, cm.getText());
}

SecurityExceptionなどが発生すると書いてある文献も見られるが自分の環境では発生しなかった。但し、Viewの選択が間違っていてnullであったりすると発生する(なぜNullPointer〜でないのか…)。ちなみに同様のテストケースをTouchUtilsを使用せずに書くと以下のようになる。

public void testPushList()
{
    mActivity.runOnUiThread(new Runnable() {
        @Override
        public void run() {
            LinearLayout item = (LinearLayout) mActivity.getListView().getChildAt(0);
            mActivity.getListView().performItemClick(item, position, 0));
            String face = (String) ((TextView) item.findViewById(R.id.list_face)).getText();
            ClipboardManager cm = (ClipboardManager) mActivity.getSystemService(Context.CLIPBOARD_SERVICE);
            MainActivityTest.assertEquals(face, cm.getText());
        }
    });
    mInstrumentation.waitForIdleSync();
}

TouchUtilsは別アプリがタップするようなイメージで、Viewに対して発生させるイメージだ。従って、performItemClickはUIThreadで実行する必要がある。

コメントはまだありません»

No comments yet.

RSS feed for comments on this post.TrackBack URL

Leave a comment