RobotiumでisCheckBoxChecked()が機能しない件の回避策
最近、Robotiumを使ったアプリケーションの評価を試しているのですが、やはりというか一部不安定な機能があります。
たとえば、isCheckBoxChecked()というメソッド。これは、任意のチェックボックスがONになっているかをテストするためのものですが、どのように使ってもfalseが返却されてしまいます。Robotiumのコミュニティにも同様の問題に当たっているケースがありました。
そこで、回避策。
エレガントではないのですが、以下のようにCheckBoxがONであるかをチェックしました。
// 1. 現在表示中のListViewを全て取得 ArrayList<ListView> a = mSolo.getCurrentListViews(); for (int i = 0; i < a.size(); i++) { ListView lv = a.get(i); // 2. 検査対象のチェックボックス入りListViewの場合 if (lv.getId() == R.id.sample_checkboxlist) { // 3. booleanのマップを取得し SparseBooleanArray checked = lv.getCheckedItemPositions(); // 4. ここでは1行目のチェックボックスがONであるかを検査 assertTrue(checked.get(0)); } }
コメント行にも書いてますが、要は、
1. 現在表示中のListViewを全て取得し、
2. その中で検査対象のチェックボックス入りListViewを見つけ、
3. チェック状態(true/false)を格納するbooleanのマップを取得し、
4. そのListViewの中でテストしたい行のチェック状態を検査する。
という流れです。ほぼ勢いで書き殴ったコードの断片ですが(一応検証済み)…ちょっと強引か笑。