Proxy transparente para probar las respuestas del servidor sin conexión en Android

Tengo un andamio de aplicaciones Android orientado a datos. Adición de pruebas, con el objetivo de una cobertura del 100%. Uso de OkHttp .

¿Cómo intercepto de forma transparente las llamadas a mi servidor con respuestas simuladas?

Quieres esto para-end-to-end, así como pruebas de unidad. Por ejemplo: la configuración de tipo de MockServer a MockServer debe cargar una aplicación que mostrará respuestas simuladas en el emulador.

¿Has mirado en okhttp mockwebserver ?

Lo utilizo para burlarse de las respuestas y verificar / mostrar las solicitudes.

Si desea usar esto con un tipo de compilación, puede generar un recurso de Android o una constante de java en gradle y, a continuación, inicie el servidor y establezca la ruta en consecuencia.

Para una unidad de pruebas, debe ser capaz de escribir su código de tal manera que aislar el uso de OkHttp. Al hacer esto, puede burlar al cliente (usando algo como Mockito ) y hacer que se comporte como quiera. Después de todo, en una prueba de unidad sólo queremos probar una sola pieza de código, no cualquiera de sus dependencias.

Algo así en Java. Del mismo modo, el patrón funciona en otros lugares (como Javascript)

 public class ClassUnderTest { private final OkHttpClient client; public ClassUnderTest(OkHttpClient client) { this.client = client; } // Other code... } // In your tests OkHttpClient mockClient = mock(OkHttpClient.class); when(mockClient.newCall(any(Request.class)).thenThrow(...); ClassUnderTest testClass = new ClassUnderTest(mockClient); verify(mockClient).doSomething(); 

Para las pruebas de integración, mockwebserver parece ser su mejor apuesta (como otros han mencionado).

  • Petición POST de Retrofit con la autenticación HTTP básica: "No se puede reintentar el cuerpo HTTP transmitido"
  • Retrofit 2 tutorial ejemplo, pero GsonConverterFactory error de visualización "No se puede resolver el símbolo"
  • Cómo agregar matriz a okhttp cuerpo (POST)
  • ¿Cómo alertar al usuario utilizando Toast que la solicitud OkHttp devolvió algo distinto de 200?
  • Cómo resolver java.lang.AssertionError al crear OkHttpClient en mockito?
  • Android OkHttp addPathSegment reemplaza barras diagonales
  • Autenticador Okhttp multihilo
  • ¿Creación de directorio para caché OkHttp en Android?
  • CertPathValidatorException: Ancla de confianza para ruta de certificación no encontrada
  • HTTPS no envía algunos encabezados de autenticación con Retrofit
  • Ninguna excepción de clase encontrada com.squareup.okhttp.logging.HttpLoggingInterceptor
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.