【问题标题】:Anyone had success mocking HttpRequests with Robolectric?有人用 Robolectric 成功地模拟了 HttpRequests 吗?
【发布时间】:2011-02-14 22:45:29
【问题描述】:

我刚开始使用 Robolectric。模拟大多数 Android 类似乎工作正常,但是当我的测试类尝试创建 DefaultHttpClient() 时,它得到了可怕的“存根!”错误。

被测类在这一行失败:

HttpClient httpclient = new DefaultHttpClient();

尽管http://robolectric.blogspot.com/2011/01/how-to-test-http-requests.html?showComment=1297722651278#c3540420071421225744 上的文章似乎表明这应该可行。

我的测试是这样的:

@Before
public void setUp() throws Exception
{
  Robolectric.addPendingHttpResponse(200, "OK");
  service = new CheckinService();
}

@Test
public void testIt() throws IOException
{
  // Fails at HttpClient httpclient = new DefaultHttpClient()
  service.doStuff(Robolectric.application,
                  REG_ID,
                  TEST_DOMAIN);
}

知道我做错了什么吗?

【问题讨论】:

    标签: android http testing mocking


    【解决方案1】:

    在 Eclipse 中修复了它。 我花了一段时间才弄清楚如何解决这个问题,但它是: 转到您的测试项目首选项 > 构建路径 > order&export > 选择 robolectric jar 并按移动到顶部。

    【讨论】:

    • 这听起来像我需要的。
    • 此方法解决了 Eclipse + ADT 中大量看似随机的问题。没想到在这里用!
    • 请注意,如果您使用的 android-support-library 版本比 robolectric 更新,则需要确保构建路径中的版本高于 robolectric。
    • 使用 IntelliJ/Android Studio 和 Maven,我不得不将 Android 平台移动到 所有 Maven 依赖项之下,而不仅仅是 Robolectric。
    【解决方案2】:

    在您的 pom.xml 中,将 robolectric 依赖项移到 android 的顶部。

    【讨论】:

    • 我没有使用 maven,所以我不确定如何在没有它的情况下复制它。有什么想法吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-11-18
    • 2013-05-14
    • 1970-01-01
    • 2023-03-19
    • 1970-01-01
    • 1970-01-01
    • 2014-03-11
    相关资源
    最近更新 更多