我正在編寫一個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