Android.content.res.Resources $ NotFoundException en Robolectric 2.4

Tengo problemas para cargar recursos al ejecutar pruebas de unidad desde la línea de comandos. Funciona bien en IntelliJ.

Estoy usando:

  • Com.android.tools.build:gradle:1.1.3
  • Org.robolectric: robolectric-gradle-plugin: 1.0.1
  • Org.robolectric: robolectric: 2.4

Tengo la siguiente estructura de proyecto (Multi-módulo):

+---module1 | | build.gradle | \---src | +---main | | | AndroidManifest.xml | | | | | +---res | | | \---values | | | strings.xml | \---test | \---java | \---example | | FooTest.java +---module2 etc 

Mi prueba (simplificada) se ve así:

 @Config(emulateSdk = 18, reportSdk = 18, manifest = "./src/main/AndroidManifest.xml") @RunWith(RobolectricTestRunner.class) public class FooTest { @Test public void test() { String result = Robolectric.application.getString(R.string.error_message); assertThat(result, notNullValue()); } } 

Obtengo este stacktrace:

 android.content.res.Resources$NotFoundException: unknown resource 2131361826 at org.robolectric.shadows.ShadowAssetManager.getAndResolve(ShadowAssetManager.java:311) at org.robolectric.shadows.ShadowAssetManager.getResourceText(ShadowAssetManager.java:69) at android.content.res.AssetManager.getResourceText(AssetManager.java) at android.content.res.Resources.getText(Resources.java:235) at org.robolectric.shadows.ShadowResources.getText(ShadowResources.java:363) at android.content.res.Resources.getText(Resources.java) at android.content.res.Resources.getString(Resources.java:325) at org.robolectric.shadows.ShadowContext.getString(ShadowContext.java:41) at org.robolectric.shadows.ShadowContextWrapper.getString(ShadowContextWrapper.java:96) at android.content.Context.getString(Context.java) 

Nota : Soy bastante nuevo en Gradle por lo que es probable que haya una configuración errónea en alguna parte. He asumido que siguiendo la convención de la estructura del proyecto que no necesito especificar dónde encontrar recursos. Traté de especificarlas pero sin ninguna suerte:

 android { sourceSets { main { manifest.srcFile 'src/main/AndroidManifest.xml' java.srcDirs = ['src/main/java'] res.srcDirs = ['src/main/res'] assets.srcDirs = ['src/main/assets'] } } } 

FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.