我正在尝试为执行一些 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);
}
这会产生类型 LoaderTestCase 中的错误 getLoaderResultSynchronously(Loader) 不适用于参数 (RESTLoader)。
RESTLoader 扩展了 AsyncLoader。注意我用的是supportlibrary,可能里面的Loader不兼容?文档没有提供这方面的信息。
我尝试了几种方法来解决这个问题,但似乎都不起作用:
- 向加载程序注册了一个侦听器。但是,回调永远不会触发
- 使用 CountdownLatch(也与侦听器一起使用)。同样,没有触发/倒计时超时。
- 玩弄类型模板(),但没有成功。
- SO上的类似解决方案,尽管再次未能达到听众。
有人知道为什么 getLoaderResultSynchronously 不会接受加载器吗?或者另一种测试加载器的干净方法,包括测试返回数据的方法?我可以在单独的情况下测试处理返回数据,但我也想测试实际数据。
真挚地,