我正在编写一个Android应用程序,有时需要通过来自REST API的HTTP请求数据。我正在使用Apache DefaultHttpClient执行请求。有没有办法为这个应用程序编写测试,并在运行测试时“替换”DefaultHttpClient的响应,以便测试结果始终保持一致?在Android中伪装HTTP请求响应以进行测试
作为我想测试的一个例子,我正在访问的一个Web服务接受一个字符串并执行文本搜索,返回一个分页的对象列表。我需要测试列表为空的情况,列表适合第一页,或列表大于一个页面,并且应用程序需要发出多个请求才能获取完整列表。
我不是这个web API的开发者,也不能修改它的回应,所以我不能改变它的回报。对于上面的例子,如果我想测试返回列表为空的情况,我可以搜索一个字符串,我肯定不会返回任何结果,但另外两种情况更难,因为该服务可以回报总是在变化。
我认为理想情况下,我将有一种方法在运行测试时获取修改的DefaultHttpClient,该测试返回给定URL的请求的硬编码结果,而不是实际执行网络请求。这样,我将始终获得一致的结果,而不依赖于真实的Web服务响应。
我目前正在使用Robotium进行测试,但我也愿意使用其他工具。
请参阅https://github.com/fabiolnm/FakeWeb-Android-Project,这是一个符合dmon建议的实现。 – 2012-03-05 07:50:04