leckyyyyyyy.info

Android の Espresso.onData で java.lang.IndexOutOfBoundsException が発生したときは

2015-06-24

Android の UI テストフレームワーク Espresso を利用しているときに Espresso.onData で java.lang.IndexOutOfBoundsException が発生したときは参照している Adapter の getCountgetItem の実装を確認してみましょう。

Espresso.onData で参照する Adapter の データを取得している箇所getCount を呼び出しているのですが、例外が発生したコードでは getCount の返す値がデータのリストの長さを返していませんでした。
getItem はデータのリストを参照していたので、つじつまが合わず例外が発生していました。

getCount、getItem は Adapter が保持するデータのリストを参照するはずなのですが、今回は全く異なる処理が組み込まれていたのでハマりました。
メソッドをオーバーライドするときは、メソッドの本来の役割を理解した上で実装しないと痛い目にあいますね。