Подтвердить что ты не робот

Как предоставить макетные данные при тестировании с помощью Espresso

У нас очень большое приложение для Android без тестов. Мы сталкиваемся с типичной проблемой качества/слишком долгого цикла циклов регрессии.

Как разработчик на стороне сервера, новичок в Android, я хочу представить тесты разработчиков.

Я вижу, как unit test нормальный Java-код с JUnit.

Однако действия/фрагменты/адаптеры оказываются более сложными.

Я смотрел видео Espresso от GTAC и был впечатлен и решил использовать это.

Где я боюсь, как предоставить мой тестовый файл с издеваемыми данными, чтобы подтвердить отображение.

Возможно ли это? Кажется, что Espresso предназначен для тестирования черного ящика, что значительно ограничивает его использование для разработчиков (его целевой аудитории), поскольку (обычно) тестирование черного ящика выполняется QA.

4b9b3361

Ответ 1

Существует библиотека под названием mockwebserver, которая позволяет вам отмахиваться от ответов сервера. Github: https://github.com/square/okhttp/tree/master/mockwebserver

Если вы используете gradle, вы можете добавить следующую зависимость:

 androidTestCompile 'com.squareup.okhttp:mockwebserver:1.3.0'

Некоторые фрагменты, которые помогут:

настроить mock Server

MockWebServer server = new MockWebServer(); 

Добавить образец ответа (будет работать только при первом вызове сервера)

server.enqueue(new MockResponse().setBody("Hello World Response"));

Запустите сервер

 server.play();

Получить URL-адрес сервера для замены обычного URL-адреса, который вы используете.

  URL baseUrl = server.getUrl("/");

Теперь сделайте запрос ко всему, что использует BaseURL так же, как вы бы назвали не издеваемую веб-службу, при первом вызове службы он вернет ответ сверху. Сложная часть состоит в том, что у вас есть точное количество MockResponses в очереди, поскольку на самом деле запросы вашего приложения будут сделаны. Будьте осторожны с отладкой/просмотром кода, потому что отладчик фактически выталкивает один из ответов, если вы переходите через свой код.

Если вам трудно понять это, вот веб-проект java (работает точно так же в Интернете, а не в Интернете). У меня есть несколько базовых примеров. https://github.com/digitalbuddha/GitPullRank

Ответ 2

Я столкнулся с той же проблемой и не смог найти ни одного fremowork, который бы идеально подходил мне. Но Wiremock был тем, кто был близко.

Я использую его для записи ответов API и/или в режиме воспроизведения, а в режиме записи, если запрос уже записан, запись не будет выполняться снова. Хотя он не полностью поддерживается на Android (пока), я запускаю его как автономный на своем компьютере, а затем запускаю тесты приложений или эспрессо. Вы также можете вручную редактировать или добавлять запросы или ответы.

Вы найдете много более подробной информации здесь