Gradle Robolectric Resources NotFoundException en pruebas
Ya he sabido que este problema se ha pedido antes, pero no puedo resolver este problema. Soy capaz de compilar y aplicar la prueba con jUnit, Robolectric y Gradle. El problema o error aparece cuando intento probar una actividad o obtener un recurso. Cada vez que tengo el mismo problema:
Android.content.res.Resources $ NotFoundException: recurso desconocido
- ¿Cómo burlar el método antes de que se cree la actividad?
- ¿Cómo sobreescribir la URL del repositorio de dependencia de Robolectric?
- Robolectric lanza Recursos $ NotFoundException al intentar acceder al recurso en la carpeta raw
- Android: No se puede inflar la vista personalizada en la prueba Robolectric
- Robolectric dice "AndroidManifest.xml no encontrado"
Recursos $ NotFoundException: ningún tema de este tipo
PageActivity startPageActivity = Robolectric.buildActivity(PageActivity.class).create().get(); Context context = Robolectric.getShadowApplication().getApplicationContext(); ShadowContext shadowContext = shadowOf(context); assertNotNull( " No App name String " ,shadowContext.getString(R.string.app_name) );
Y esta es la estructura del proyecto:
. ├── build.gradle ├── settings.gradle └── mainproject ├── build │ ├── classes │ │ └── debug ├── build.gradle └── src └── main │ ├── AndroidManifest.xml │ └── java │ └── com... │ └── resources └── envDev │ └── java │ └── com... │ └── resources └── envQa │ └── java │ └── com... │ └── resources └── envLive │ └── java │ └── com... │ └── resources └── test │ └── src │ └── java │ └── com... │ └── rescources └── testEnvDev │ └── src │ └── java │ └── com... │ └── rescources └── testEnvQa │ └── src │ └── java │ └── com... │ └── rescources └── testEnvLive └── src └── java └── com... └── rescources
Este es el conjunto de fuentes definido en gradle:
sourceSets { main { java.srcDir file('src/main/java') manifest.srcFile file('src/main/AndroidManifest.xml') res.srcDir file('src/main/resources') } envDev { java.srcDir file('src/envDev/java') manifest.srcFile 'src/envDev/AndroidManifest.xml' res.srcDir file('src/envDev/resources') } envQa { java.srcDir file('src/envQa/java') manifest.srcFile 'src/envQa/AndroidManifest.xml' res.srcDir file('src/envQa/resources') } envLive { java.srcDir file('src/envLive/java') manifest.srcFile 'src/envLive/AndroidManifest.xml' res.srcDir file('src/envLive/resources') } instrumentTest { java.srcDir file('src/test/java') res.srcDir file('src/test/resources') } instrumentTestEnvDev { java.srcDir file('src/testEnvDev/java') res.srcDir file('src/testEnvDev/resources') } instrumentTestEnvQa { java.srcDir file('src/testEnvQa/java') res.srcDir file('src/testEnvQa/resources') } instrumentTestEnvLive { java.srcDir file('src/testEnvLive/java') res.srcDir file('src/testEnvLive/resources') } }
¿Podría alguien dar una mano para hacer frente a este problema?
Gracias
- Robolectric 2.1 y Eclipse
- Prueba de vistas personalizadas con Robolectric
- Problema con Robolectric con la nueva versión de los servicios de Google Play
- Prueba de DialogFragments con Robolectric
- Test Robolectric ListView no se actualiza después de cambios de valor en el adaptador
- Prueba de AsyncTaskLoaders con Robolectric
- Cómo utilizar gradle-android-test-plugin
- Robolectric with Gradle: Recursos no encontrados
Tuve este mismo problema incluso con Robolectric v2.3-SNAPSHOT. Resuelto por establecer explícitamente el manifiesto en el archivo de prueba a través de la anotación Config, como
@Config(manifest = "src/main/AndroidManifest.xml") @RunWith(RobolectricTestRunner.class) public class MainActivityTest extends AndroidTestCase { ... }
Al final logré resolverlo moviéndome a Robolectric v2.3-SNAPSHOT.
Usted puede encontrar este SNAPSHOT aquí oss.sonatype.org/index.html#nexus-search;quick~org.robolectric
El mismo plugin de Jake Wharton funciona bien con este Robolectric v2.3-SNAPSHOT.
Tal vez esta información podría ayudar a alguien más.
- Detección de mensajes de tostadas
- INSUFFICENT_STORAGE_MEMORY mensaje mientras instala 50 mb apk en el emulador