API 呼び出しを行う REST クライアントの単体テストを作成しようとしています。クライアントはライブ アプリケーションでは正常に動作しますが、テスト ケースでは実行できません。
どうやら、ここで LoaderTestCase.getLoaderResultSynchronously() を使用できます (少なくとも Android リファレンスによると、しかし、それは私のローダーを受け入れません。コード:
public void testGetEventInfo() {
// Init some vars
...
// Create & execute loader
RESTLoader loader = new RESTLoader(getContext(),
RESTLoader.HTTPVerb.GET, action, params, LOADER_GET_NEWS);
getLoaderResultSynchronously(loader);
}
これにより、エラーgetLoaderResultSynchronously(Loader) in the type LoaderTestCase is not applied for the arguments (RESTLoader) が生成されます。
RESTLoader は AsyncLoader を拡張します。私はサポートライブラリを使用していることに注意してください.おそらくそこにあるローダーは互換性がありませんか? ドキュメントには、これに関する情報はありません。
私はいくつかの方法でこれを解決しようとしましたが、どれもうまくいかないようです:
- リスナーをローダーに登録しました。ただし、コールバックはトリガーされません
- CountdownLatch の使用 (リスナーも使用)。繰り返しますが、トリガー/カウントダウンのタイムアウトはありません。
- 型テンプレート () をいじってみましたが、成功しませんでした。
- SO でも同様のソリューションですが、リスナーに到達できません。
getLoaderResultSynchronously がローダーを受け入れない理由を知っている人はいますか? または、戻りデータをテストする方法を含む、ローダーをテストする別のクリーンな方法はありますか? 別のケースで戻りデータの処理をテストできますが、実際のデータもテストしたいと思います。
心から、