Android 在生产中使用okhttp模拟Web服务器

Android 在生产中使用okhttp模拟Web服务器,android,webserver,okhttp3,Android,Webserver,Okhttp3,我已经在测试中使用了okhttp的mockWebServer()很多年了,它运行得非常好。通过阅读文档和浏览Google,该库似乎是真正的测试目标 但我的问题是,我是否有任何理由不能在生产代码中使用它?我正在开发一个android应用程序,它需要一个模拟web服务器。我已经整合了它,它工作得很好,但我担心我所做的是否有完全错误的地方 另外,在生产中使用模拟web服务器时,是否有任何安全风险需要注意 谢谢 MockWebServer返回“mock”(换句话说,“notreal”)数据。如果在生产中

我已经在测试中使用了okhttp的mockWebServer()很多年了,它运行得非常好。通过阅读文档和浏览Google,该库似乎是真正的测试目标

但我的问题是,我是否有任何理由不能在生产代码中使用它?我正在开发一个android应用程序,它需要一个模拟web服务器。我已经整合了它,它工作得很好,但我担心我所做的是否有完全错误的地方

另外,在生产中使用模拟web服务器时,是否有任何安全风险需要注意

谢谢

MockWebServer返回“mock”(换句话说,“notreal”)数据。如果在生产中使用该类,则必须继续向其提供虚假数据,或者通过某个单独的库或工具进行真正的HTTP调用,并将其响应填充到MockWebServer中。那么,重点是什么呢?为什么不让OkHttp按照设计直接进行调用呢

我猜您可能误解了OkHttp3和MockWebServer之间的关系

  • OkHttp3-通过任何HTTP堆栈发出HTTP请求的HTTP客户端(默认情况下,使用提供的Android设备HTTP网络;wi-fi、cell等)
  • MockWebServer-仅在测试中用于向OkHttp HTTP客户端提供硬编码(非真实)HTTP响应,以便在测试期间不需要实时网络连接,或一致模拟各种网络连接问题,如断开连接、无效HTTP响应、服务器错误等
您应该只在应用程序代码中使用OkHttp3

仅在您的测试中,您可以使用MockWebServer伪造响应(或者拦截,如果您以这种方式配置它),以测试应用程序对OkHttp3的调用。当您投入生产时,不应该引用或调用任何MockWebServer代码(因为您将其全部放在test/androidTest源代码目录中,对吗?),而OkHttp3代码将通过internet进行真正的HTTP调用,因为MockWebServer将不再在那里拦截它们

基本上,如果您的
build.gradle
中除了
testCompile'com.squareup.okhttp3:mockwebserver:x.x'
和/或
androidTestCompile'com.squareup.okhttp3:mockwebserver:x.x'
之外还有什么东西,那么您就做错了。主、真实、生产应用程序不需要模拟web服务器,因为它将通过internet向真实web服务器进行真实调用。

模拟web服务器返回“模拟”(换句话说,“非真实”)数据。如果在生产中使用该类,则必须继续向其提供虚假数据,或者通过某个单独的库或工具进行真正的HTTP调用,并将其响应填充到MockWebServer中。那么,重点是什么呢?为什么不让OkHttp按照设计直接进行调用呢

我猜您可能误解了OkHttp3和MockWebServer之间的关系

  • OkHttp3-通过任何HTTP堆栈发出HTTP请求的HTTP客户端(默认情况下,使用提供的Android设备HTTP网络;wi-fi、cell等)
  • MockWebServer-仅在测试中用于向OkHttp HTTP客户端提供硬编码(非真实)HTTP响应,以便在测试期间不需要实时网络连接,或一致模拟各种网络连接问题,如断开连接、无效HTTP响应、服务器错误等
您应该只在应用程序代码中使用OkHttp3

仅在您的测试中,您可以使用MockWebServer伪造响应(或者拦截,如果您以这种方式配置它),以测试应用程序对OkHttp3的调用。当您投入生产时,不应该引用或调用任何MockWebServer代码(因为您将其全部放在test/androidTest源代码目录中,对吗?),而OkHttp3代码将通过internet进行真正的HTTP调用,因为MockWebServer将不再在那里拦截它们

基本上,如果您的
build.gradle
中除了
testCompile'com.squareup.okhttp3:mockwebserver:x.x'
和/或
androidTestCompile'com.squareup.okhttp3:mockwebserver:x.x'
之外还有什么东西,那么您就做错了。主要的、真实的生产应用程序不需要模拟web服务器,因为它将通过internet对真实的web服务器进行真正的调用