test studio example activity android testing resources gradle robolectric

example - robolectric android studio



Gradle Robolectric Resources NotFoundException en pruebas (2)

Ya sabía que este problema se había planteado antes, pero no puedo resolver este problema. Puedo compilar y aplicar pruebas con jUnit, Robolectric y Gradle. El problema o error aparece cuando trato de probar una actividad u obtener un recurso. Cada vez que tengo el mismo problema:

android.content.res.Resources $ NotFoundException: recurso desconocido

Recursos $ NotFoundException: no hay tal tema

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 fuente 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 enfrentar este problema?

Gracias


Tuve este mismo problema incluso con Robolectric v2.3-SNAPSHOT. Lo resolvió estableciendo explícitamente el manifiesto en el archivo de prueba mediante 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.

Puede encontrar esta INSTANTÁNEA aquí oss.sonatype.org/index.html#nexus-search;quick~org.robolectric

El mismo complemento de Jake Wharton funciona bien con este Robolectric v2.3-SNAPSHOT.

Tal vez esta información podría ayudar a alguien más.