MockWebServer возвращает «mock» (другими словами, «не реальные») данные. Если вы использовали класс в производстве, вам придется либо продолжать предоставлять поддельные данные, либо делать настоящие HTTP-вызовы через какую-то отдельную библиотеку или инструмент, и передавать свои ответы в MockWebServer. И тогда, какой смысл? Почему бы просто не позволить OkHttp делать звонки напрямую, поскольку он был разработан?
Мое предположение, возможно, вы неправильно понимаете отношения между OkHttp3 и MockWebServer.
- OkHttp3 - HTTP-клиент, который делает HTTP запросы через любой стек HTTP (по умолчанию, использует поставляемый Android устройство HTTP сеть, Wi-Fi, мобильный и т.д.)
- MockWebServer - используется только в тестах на поставку жестко закодированные (не реальные) HTTP-ответы на HTTP-клиент OkHttp, так что во время тестов не требуется живое сетевое соединение или последовательно имитировать различные проблемы сетевого подключения, такие как сброшенные соединения, неверные ответы HTTP, ошибки сервера и т. д.
В коде приложения должен использоваться только OkHttp3.
В ваших тестах только у вас есть MockWebServer для подделки ответов (или перехвата, если вы настроите его таким образом), чтобы проверить вызовы вашего приложения на OkHttp3. Когда вы идете на производство, ни один из кодов MockWebServer не должен упоминаться или вызываться (поскольку вы все это вносите в исходные коды тестов/androidTest, верно?), А код OkHttp3 будет выполнять настоящие HTTP-вызовы через Интернет, так как MockWebServer выиграл чтобы их перехватить.
В принципе, если у вас есть что-нибудь в вашем build.gradle
кроме testCompile 'com.squareup.okhttp3:mockwebserver:x.x.x'
и/или androidTestCompile 'com.squareup.okhttp3:mockwebserver:x.x.x'
, чем вы делаете это неправильно. Главное, реальное, производственное приложение не нуждается в макетном веб-сервере, поскольку он будет делать реальные вызовы через Интернет на реальном веб-сервере.