如何在Android测试中正确模拟HttpGet调用

如何在Android测试中正确模拟HttpGet调用,第1张

概述我有一个使用HttpGet执行HTTPGET调用的应用程序,我想模拟响应,以便测试不同的场景,而无需设置任何特定的本地服务器,就像远程一样.目标是进行非常高级别的测试,其作用类似于真实用户(Robotium),并伪造应用程序将获得的响应,调用真实服务器.就像测试Twitter客户端一样,如果你需要

我有一个使用HttpGet执行http GET调用的应用程序,我想模拟响应,以便测试不同的场景,而无需设置任何特定的本地服务器,就像远程一样.

目标是进行非常高级别的测试,其作用类似于真实用户(Robotium),并伪造应用程序将获得的响应,调用真实服务器.就像测试Twitter客户端一样,如果你需要一个例子.

解决方法:

好的,所以这就是我在Robotium测试中得到的假httpResponses:
– 我有一个类httpCallBuilder,它通常只返回一个DefaulthttpClIEnt
– 我添加了一个sethttpClIEnt()方法来在我的测试中设置一个MockhttpClIEnt(你需要在httpClIEnt接口中实现(清空)很多方法,我在这里省略了):

public class MockhttpClIEnt implements httpClIEnt {private static Context context;private final BasichttpParams params = new BasichttpParams();@OverrIDepublic httpResponse execute(httpUriRequest request) throws IOException,        ClIEntProtocolException {    inputStream mockinputStream = context.getAssets().open(            MockResponses.forRequest(request));    return new MockhttpResponse(mockinputStream);}@OverrIDepublic httpParams getParams() {    return params;}public static voID setContext(Context applicationContext) {    MockhttpClIEnt.context = applicationContext;}}

MockResponses允许您根据情况对正确的响应进行模拟:

public class MockResponses {private static final List<String[]> responseMapPing = new ArrayList<String[]>();private static final String BASE = "mocks/";public static String forRequest(final httpUriRequest request) {    final String requestString = request.getURI().toString();    for (final String[] mapPing : responseMapPing) {        if (requestString.matches(mapPing[0])) {            return BASE + mapPing[1];        }    }    throw new IllegalArgumentException(            "No mocked reply configured for request: " + requestString);}public static voID forRequestDoAnswer(final String regex,        final String fileToReturn) {    responseMapPing.add(new String[] { regex, fileToReturn });}public static voID reset() {    responseMapPing.clear();}}

在测试中,您可以像这样准备测试:

httpCallBuilder.sethttpClIEnt(new MockhttpClIEnt());MockhttpClIEnt.setContext(context);MockResponses.reset();MockResponses.forRequestDoAnswer(".*method=Login.*", "loginform.HTML");
总结

以上是内存溢出为你收集整理的如何在Android测试中正确模拟HttpGet调用全部内容,希望文章能够帮你解决如何在Android测试中正确模拟HttpGet调用所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1109979.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-29
下一篇 2022-05-29

发表评论

登录后才能评论

评论列表(0条)

保存