ActionBarSherlockとSlidingMenuなテスト
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をオーバーライドする方が良いかと)