Как правильно тестировать Android приложение?

Дано: модели, использующие внутри okhttp. Как это дело тестировать?

Как вообще правильно тестировать асинхронные приложения? Unit? Как-то еще? Поделитесь своим опытом, товарищи.
  • Вопрос задан
  • 674 просмотра
Пригласить эксперта
Ответы на вопрос 4
@Carburn
На github okhttp написно про библиотеку MockWebServer для тестирования HTTP запросов.
Ответ написан
Комментировать
@red-barbarian
никак. автоматические тесты могут дать прохождение 10 раз, а на 11 застопорить. Мо можно попытаться сделать архитектуру такой, что бы максимально покрыть свои классы тестами. оставив асинхронность минимально достаточное место в проекте. И постараться сделать асинхронность максимально прозрачной и понятной.
Ответ написан
Комментировать
VYakushev
@VYakushev
Разработчик Android в Nowtaxi
Во-первых, модели вообще не должны знать с помощью чего вы выходите в интернет: OkHttp, Retrofit и т.п.

Во-вторых, модели вообще ничего делать не должны. Надеюсь, вы говорите про классы бизнес-логики. Т.е. про то, что сейчас называют такими словами как UseCase или Interactor.

Поэтому, для работы с API создаёте Interface, который описывает методы и их параметры для взаимодействия. Класс, реализующий данный интерфейс, передаётся в ваш интерактор через конструктор или метод-сеттер. Но конструктор лучше. А внутри этого класса у вас уже та или иная реализация работы с API. При этом ваш интерактор вообще не должен знать как там и что реализовано. У него есть знание только об интерфейсе класса.

Для рабочей сборки приложения вы передайте реальный класс, а для тестов его тестовую реализацию: стабы или моки. И для юнит-тестов вам никакой интернет и мок-вебсерверы не нужны.
Ответ написан
elfuegobiz
@elfuegobiz
Попробуйте robolectric, с ней можно очень много тестить локально простыми юнит-тестами из того, что в норме тестится на девайсе инструментальными тестами, в т.ч. и http.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы