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

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

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.

  • Robolectric: cómo probar una SherlockActivity
  • Robolectric + Maven
  • Confused sobre testCompile y androidTestCompile en Android Gradle
  • Robolectric Test no llama a textWatcher.onTextChanged
  • Java.util.ConcurrentModificationException en las pruebas de JUnit
  • Cómo determinar la unidad de píxeles (px, dp, etc) de una vista en Java?
  • El uso en la generación de procesos desapareció en Android Studio v1.3
  • Robolectric 3.0, no pudo probar una función que inicia un HandlerThread
  • Prueba de vistas personalizadas con Robolectric: Ancho y altura siempre son 0
  • Recursos de la biblioteca con Robolectric 3 - JodaTime
  • Uso de Robolectric para probar el código que inicia una actividad
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.