Tôi đã có một lớp:Làm thế nào để đơn vị kiểm tra một lớp học sử dụng HttpClient trong Android bằng cách sử dụng khung dựng sẵn?
public class WebReader implements IWebReader {
HttpClient client;
public WebReader() {
client = new DefaultHttpClient();
}
public WebReader(HttpClient httpClient) {
client = httpClient;
}
/**
* Reads the web resource at the specified path with the params given.
* @param path Path of the resource to be read.
* @param params Parameters needed to be transferred to the server using POST method.
* @param compression If it's needed to use compression. Default is <b>true</b>.
* @return <p>Returns the string got from the server. If there was an error downloading file,
* an empty string is returned, the information about the error is written to the log file.</p>
*/
public String readWebResource(String path, ArrayList<BasicNameValuePair> params, Boolean compression) {
HttpPost httpPost = new HttpPost(path);
String result = "";
if (compression)
httpPost.addHeader("Accept-Encoding", "gzip");
if (params.size() > 0){
try {
httpPost.setEntity(new UrlEncodedFormEntity(params, "UTF-8"));
} catch (UnsupportedEncodingException e1) {
e1.printStackTrace();
}
}
try {
HttpResponse response = client.execute(httpPost);
StatusLine statusLine = response.getStatusLine();
int statusCode = statusLine.getStatusCode();
if (statusCode == 200) {
HttpEntity entity = response.getEntity();
InputStream content = entity.getContent();
if (entity.getContentEncoding() != null
&& "gzip".equalsIgnoreCase(entity.getContentEncoding()
.getValue()))
result = uncompressInputStream(content);
else
result = convertStreamToString(content);
} else {
Log.e(MyApp.class.toString(), "Failed to download file");
}
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return result;
}
private String uncompressInputStream(InputStream inputStream)
throws IOException {...}
private String convertStreamToString(InputStream is) {...}
}
tôi không thể tìm thấy một cách để kiểm tra nó sử dụng một khung tiêu chuẩn. Đặc biệt, tôi cần phải mô phỏng tổng số internet bị mất từ bên trong thử nghiệm.
Có các đề xuất để tắt Internet theo cách thủ công trong trình mô phỏng khi thực hiện kiểm tra. Nhưng có vẻ như tôi không phải là một giải pháp tốt, bởi vì các bài kiểm tra tự động nên ... tự động.
Tôi đã thêm trường "khách hàng" vào lớp cố gắng giả lập từ bên trong lớp kiểm tra. Nhưng việc thực hiện giao diện HttpClient có vẻ khá phức tạp.
Khung Robolectric cho phép nhà phát triển thử nghiệm Http connection theo như tôi biết. Nhưng tôi đoán có một số cách để viết thử nghiệm như vậy mà không cần sử dụng khung công tác bổ sung lớn như vậy.
Vì vậy, có cách nào ngắn và đơn giản của các lớp thử nghiệm đơn vị sử dụng HttpClient? Bạn đã giải quyết vấn đề này như thế nào trong các dự án của mình?
Cảm ơn câu trả lời của bạn. Vâng, tiêu đề nói về kiểm tra đơn vị một số lớp có sử dụng HttpClient, tôi không có nghĩa là thử nghiệm HttpClient rất. Xin lỗi, nếu tôi không nói rõ. Tùy chọn với trình quản lý WiFi rất tuyệt, nhưng điện thoại vẫn giữ kết nối qua mạng di động. Tôi đã thử chế độ trên máy bay, nó vẫn đang kết nối. Vì vậy, tôi đoán, Robolectric là sự lựa chọn duy nhất. Cảm ơn bạn. –