Android,Espresso:http STUB响应的最佳工具

时间:2017-04-27 12:11:42

标签: android

我使用Android Volley进行http请求/响应。

com.android.volley:volley:1.0.0

我在文件夹" androidTest"中编写我的Android检测单元测试。

我通过JUnit和Espresso测试我的逻辑和UI。一切正常。

我的Espresso测试之一:

@Test
public void addFavorite() {
    onView(withId(android.support.design.R.id.search_src_text)).perform(typeText(CONTACT_SURNAME)).perform(closeSoftKeyboard());
    onData(anything()).inAdapterView(withId(R.id.containerNotEmptyListView)).atPosition(0).onChildView(withText(R.string.add_favorites))
        .perform(click());
    onData(anything()).inAdapterView(withId(R.id.containerListView)).atPosition(0).onChildView(withText(R.string.remove_favorites))
        .check(matches(isDisplayed()));
}

此Espresso测试:

  1. 滚动listView以联系CONTACT_SURNAME
  2. 点击项目
  3. 结果启动http请求
  4. 返回PRODUCTION http响应检查后,联系人现在有文字"删除收藏"
  5. 此Espresso测试工作正常。 OK!

    现在我想编写单元测试(也在文件夹" androidTest"中):

    1. 检查成功响应(http状态= 200)然后显示Toast

    2. 检查是否有错误的回复(例如http状态= 403),然后显示对话

    3. 所以,要做到这一点,我需要一些工具返回给我STUB http响应。

      我希望此工具必须具有以下选项:

      1. 直接从Android应用程序(在androidTest文件夹中)编写测试。 像这样:

        @Test
        public void exactUrlOnly() {
        
               stubFor(get(urlEqualTo("/some/thing"))
                      .willReturn(aResponse()
                      .withHeader("Content-Type", "text/plain")
                      .withBody("Hello world!")));
              assertThat(testClient.get("/some/thing").statusCode(), is(200));
              assertThat(testClient.get("/some/thing/else").statusCode(), is(403));
        }
        
      2. 此工具可以在http响应正文中返回json。 像这样:

        {
            "response": {
                "status": 200,
                "body": "Hello world!",
                "headers": {
                    "Content-Type": "text/plain"
                }
            }
        }
        
      3. 有人知道这样的工具吗? 感谢。

0 个答案:

没有答案