ActionBarSherlockとSlidingMenuなテスト

2013-05-18T00:00:00+00:00 Android Java

ActionBarSherlockなActionBarを使いつつの、ホームアイコンをタップしたらSlidingMenuが出たり消えたりするっていう所なUIテスト的なのをちょっと色々やってみた

package kinjouj.sample.test;

import android.test.SingleLaunchActivityTestCase;
import android.test.TouchUtils;
import android.view.KeyEvent;
import android.view.View;
import kinjouj.sample.MainActivity_;

public class MainActivityTestCase extends SingleLaunchActivityTestCase<MainActivity_> {

    private MainActivity_ mActivity;

    public MainActivityTestCase() {
        super("kinjouj.sample", MainActivity_.class);
    }

    @Override
    protected void setUp() throws Exception {
        super.setUp();

        mActivity = getActivity();
    }



    public void test_SlidingMenu() throws Throwable {
        assertNotNull(mActivity);

        View homeIconView = mActivity.findViewById(com.actionbarsherlock.R.id.abs__home);

        TouchUtils.tapView(this, homeIconView);
        assertTrue(mActivity.getSlidingMenu().isMenuShowing());

        /* 後述参照
        TouchUtils.tapView(this, homeIconView);
        assertFalse(slidingMenu.isMenuShowing());
        */

        runTestOnUiThread(new Thread() {
            @Override
            public void run() {
                mActivity.dispatchKeyEvent(
                    new KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_BACK)
                );
                assertFalse(mActivity.getSlidingMenu().isMenuShowing());
            }
        });
    }
}

ActionBarSherlockを使ってるので、android.R.id.homeで取れない(バージョンによるんかなと)。com.actionbarsherlock.R.id.abs_homeで取れる模様なので、それをTouchUtils.tapViewする。で開いてるかとかどうかはSlidingMenuのisMenuShowingメソッドで分かるのでそれを使う

で後述参照って書いてる所だが、そこでも閉じたり出来るけどSlidingMenuが表示されている状態でハードウェアバックキーをタップすると開いてればアプリを閉じずにメニューだけを閉じるような仕組みになっているので、そこはrunTestOnUiThread内でやってるって感じ(onBackPressedをオーバーライドする方が良いかと)

DialogFragmentのテスト HDFSにデータをコピるケース