2012-02-28 13 views

Respuesta

16

Jan Berkel envió a pull request a Robolectric que se fusionó con el maestro el 8 de marzo. Ahora puede llamar al Robolectric.getFakeHttpLayer().interceptHttpRequests(false); al comienzo de su prueba para eludir la capa http burlada en Robolectric.

Puede descargar el jar directamente desde Sonatype para incluirlo en su proyecto Eclipse Android. Si está utilizando Maven y 1.1 todavía no se ha liberado (consulte la url de Sonatype anterior), deberá agregar el repositorio de instantáneas de sonatype y usar la versión 1.1-SNAPSHOT de robolectric. Puede hacer esto añadiendo lo siguiente a su pom.xml

<repositories> 
    <repository> 
     <id>sonatype-snapshots</id> 
     <name>Sonatype Snapshots</name> 
     <layout>default</layout> 
     <url>https://oss.sonatype.org/content/repositories/snapshots</url> 
     <snapshots> 
      <enabled>true</enabled> 
     </snapshots> 
    </repository> 
</repositories> 
... 
<dependencies> 
    <dependency> 
     <groupId>com.pivotallabs</groupId> 
     <artifactId>robolectric</artifactId> 
     <version>1.1-SNAPSHOT</version> 
     <scope>test</scope> 
    </dependency> 
    ... 
</dependencies> 

estoy usando esto para prueba de integración que se ejecuta en un servidor real y funciona bien.

+0

:) muchas gracias –

3

Básicamente no es así. Robolectric es un marco de prueba y así es como se diseñó para funcionar, lo que usted solicitó no es lo que hacemos con Robolectric.

Estoy seguro de que ha venido cruzar this blog tomando sobre el uso de solicitudes HTTP de prueba Robolectric. En realidad, el título "Cómo probar las solicitudes HTTP" no es exactamente correcto. Prefiero llamarlo "Cómo simular solicitudes HTTP", como se indica en este blog, el mejor lugar para utilizar la solicitud http de simulacro de Robolectric es donde realmente no desea molestar las llamadas reales de red al servidor remoto durante el desarrollo del proyecto./fase de prueba.

Supongamos que tengo una actividad principal conectarse a mi cuenta bancaria para alguna operación, el botón enviar debe publicar mi información de entrada en el servidor remoto actualizar la información de mi cuenta, luego basándome en diferentes respuestas me llevan a diferentes actividades. He escrito todo el código sin problemas, HttpClient, formulario con botón de enviar, nuevo intento para la próxima actividad, etc. todo bien y limpio. Bien, cómo puedo probar cuando hago clic en el botón enviar, la actividad adecuada se abre en función de esas respuestas diferentes, sin necesidad de cambiar mi código fuente de actividad o usar una llamada de red real para atornillar mi cuenta bancaria real. La respuesta es Robolectric mock http request. El punto clave de usar Robolectric en este caso no es para probar la solicitud http real, sino que se usa para engañar a mi código httpClient y probar otra parte del código de mi aplicación como cosas de UI. En última instancia, la prueba de red real debe realizarse en un emulador o en un dispositivo real en algún momento cuando su implementación llegue a un estado estable final.

Otra ventaja que afirma el equipo de Robolectirc es que no necesita iniciar la prueba de instrumentación en el emulador o dispositivo, que es ineficiente y ralentiza el desarrollo de la aplicación/ciclo de vida de la prueba.

+0

Conozco el http simulado, y es útil cuando se trata de probar el inicio de sesión que depende de un proveedor oauth del que no tengo control. Pero cuando quiero probar mis fachadas de servicios es inútil burlarme de todas las solicitudes porque tengo el servidor de prueba local funcionando de todos modos y configuro los datos correctos. Entonces, lo que quiero hacer es una prueba de integración con solicitud real en algún momento y en otro punto (inicio de sesión) Quiero usar el fakehttpclient proporcionado por robolectric –

+0

@Felix, desde mi propia experiencia, uso Robolectric JUnit Test y Android Instrumentation Test (a través de Test Project) juntos. Para probar la solicitud http real, simplemente no use Robolectric. – yorkw

Cuestiones relacionadas