シナリオ:
アプリケーションの onClick ハンドラを単体テストしようとしています。Onclick は REST API に対して単純な検索を行い、結果を返し、UI を更新します。
詳細:
Onclick は AsyncTask を実行し、doInBackground は REST API にクエリを実行して結果を返します。onPostExecute は結果を取得し、新しい ListAdapter をデータと共に ListView に割り当てます。
問題:
onPostExecute は、同じ UI スレッド上にあり、呼び出しをブロックするため、テスト ランナーによって呼び出されません。これを処理するには、いくつかのパターンがあります。ただし、AsyncTask を Runnable に配置し、LatchCountdown を使用して結果を待つと、CalledFromWrongThread 例外が発生します。
UI の更新を行う AsyncTask を単体テストする良い解決策はありますか? または、実装できるよりテスト可能な設計ですか?