2015-09-18 2 views
0

Я разработал небольшое приложение с экраном входа, а также написал несколько сценариев эспрессо, чтобы автоматизировать их.Эспрессо-интеграция с проводником

Я знаю, что WireMock - это гибкая библиотека для создания и издевательств веб-сервисов. С помощью этого можно создать фактический HTTP-сервер, чтобы ваш тестовый код мог подключаться, поскольку это будет настоящий веб-сервис.

Теперь я хочу разработать веб-сервис для экрана входа с помощью wiremock.I проделал детали, предоставленные Here , но описание слишком много технического. Если у кого-нибудь есть какой-либо учебник, ссылка или идея, как сделать то же самое, что будет здорово.

Я использую инструмент ниже.

  • Android Студия
  • Эспрессо
  • Gradle инструмент для сборки
+1

Вот связанный разговор, который я дал об использовании wiremock на Android. https://www.youtube.com/watch?v=-xQCNf_5NNM – yogurtearl

+1

Спасибо @yogurtearl. Я смотрел видео. Он действительно полезен и начал его реализовывать. –

+0

Dinesh, в видео @ yogutearl, он упомянул, что вам нужно возиться/модифицировать WireMock, чтобы заставить его работать на Android. С последней версией 2.0.8-бета вы можете использовать ее без изменений. Я расскажу о том, как получить эту настройку в другом ответе на переполнение стека: http://stackoverflow.com/a/34657479/509081 –

ответ

1

Отказ от ответственности: Я разработчик Java и никогда не разрабатывала на андроида.

Действительно ли это, что вы хотите сделать? Почему бы не обернуть ваши вызовы webservice в классе с помощью интерфейса? (используя jaxrs или аналогичный). Тестирование может быть намного проще, поскольку вы можете высмеять простой старый интерфейс (используя mockito или аналогичный).

Этот подход имеет то преимущество, что тесты «не сработают быстро», если интерфейс веб-службы изменится несовместимым образом (поскольку тесты больше не будут компилироваться).

Стыковка http-запроса/ответа все время звучит многословно и трудно поддерживать по сравнению с издевательским интерфейсом.

+1

Ваше предложение действительно для некоторых уровней тестирования. Однако, если вы хотите протестировать свое приложение в его чистой форме (за исключением другой конечной точки URL), тогда WireMock позволяет это сделать. Это особенно полезно в тесте Android Espresso, потому что пользовательский интерфейс вашего приложения управляется автоматическими командами пользовательского интерфейса, и вы хотите проверить свое приложение как можно ближе к окончательной версии. –

0

Вы можете просто запустить wiremock из теста приемки единицы, как это:

@Rule 
public WireMockRule wireMockRule = new WireMockRule(options().port(PORT).notifier(new ConsoleNotifier(true))); 

@Rule 
public ActivityTestRule<T> activityRule = new ActivityTestRule<T>(type) { 
     @Override 
     protected void beforeActivityLaunched() { 
      stubFor(get(urlPathEqualTo("/myUrl")) 
      .willReturn(aResponse() 
        .withStatus(200) 
        .withBody("{ 'status': 'OK' }"))); 
     } 
    }; 

@Before 
public void before() { 
    activityRule.getActivity(); 
} 

@Test 
public void test() { 
    // using espresso trigger the call on your activity 
} 

Я предположил, что вы есть эспрессо на месте, и вы знаете, как использовать это. Обратите внимание, что заглушка должна быть в методе beforeActivityLaunched иначе, если действие вызывает некоторые вызовы при запуске, тогда заглушки еще не готовы.

Смежные вопросы