Robolectric: NotFoundException: recurso desconocido 0 en org.robolectric.shadows.ShadowAssetManager.getAndResolve (ShadowAssetManager.java:258)

Encontré el error cuando la prueba getView de un apdater. El código probado estaba llamando a View.setImageResource (0) durante el caso de prueba para establecer una imagen vacía cuando sucede la excepción.

Ejecuté la prueba robolectric-2.2-20130712.161723-17-jar-with-dependencies.jar con Eclipse. He intentado reemplazar el ResouceLoader con ShadowResources.createFor (nuevo ResourceLoader () {…}. Pero no funciona, mi ResouceLoader reemplazado no fue llamado.

¿Alguien sabe cómo resolverlo?

android.content.res.Resources$NotFoundException: unknown resource 0 at org.robolectric.shadows.ShadowAssetManager.getAndResolve(ShadowAssetManager.java:258) at org.robolectric.shadows.ShadowAssetManager.getResourceValue(ShadowAssetManager.java:85) at android.content.res.AssetManager.getResourceValue(AssetManager.java) at android.content.res.Resources.getValue(Resources.java:1009) at android.content.res.Resources.getDrawable(Resources.java:658) at org.robolectric.shadows.ShadowView.buildDrawable(ShadowView.java:92) at org.robolectric.shadows.ShadowImageView.setImageResource(ShadowImageView.java:38) at android.widget.ImageView.setImageResource(ImageView.java) at com.mobile.client.share.edentity.PhotostreamAdapter.getView(PhotostreamAdapter.java:54) at com.mobile.client.share.edentity.PhotostreamAdapterTest.testGetView(PhotostreamAdapterTest.java:163) at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:47) at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12) at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:44) at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17) at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26) at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:27) at org.robolectric.RobolectricTestRunner$2.evaluate(RobolectricTestRunner.java:241) at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:271) at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:70) at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:50) at org.junit.runners.ParentRunner$3.run(ParentRunner.java:238) at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:63) at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:236) at org.junit.runners.ParentRunner.access$000(ParentRunner.java:53) at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:229) at org.robolectric.RobolectricTestRunner$1.evaluate(RobolectricTestRunner.java:177) at org.junit.runners.ParentRunner.run(ParentRunner.java:309) at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50) at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197) 

Otro problema similar en mi prueba de unidad roboletric en mi Apdater ContentDetailsAdapter es de la instrucción mContext.getResources (). GetString (R.string.delete_hint_title). El mContext es creado por Robolectric.getShadowApplication (). GetApplicationContext (). ¿Hay algo mal con mi configuración sobre Roboletric? Pude llamar a ProgressDialog.show (mContext, "", "") en mi prueba de unidad. Parece que el problema siempre está con los recursos. Aquí está la pila:

 android.content.res.Resources$NotFoundException: String resource ID #0x7f07004f at android.content.res.Resources.getText(Resources.java:229) at android.content.res.Resources.getString(Resources.java:313) at com.mobile.client.share.edentity.ContentDetailsAdapter.checkDeletedSelection(ContentDetailsAdapter.java:220) at com.mobile.client.share.edentity.ContentDetailsAdapter.getCheckedItems(ContentDetailsAdapter.java:178) at com.mobile.client.share.edentity.SetsAdapterTest.testGetCheckedItems(SetsAdapterTest.java:361) at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:47) at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12) at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:44) at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17) at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26) at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:27) at org.robolectric.RobolectricTestRunner$2.evaluate(RobolectricTestRunner.java:241) at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:271) at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:70) at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:50) at org.junit.runners.ParentRunner$3.run(ParentRunner.java:238) at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:63) at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:236) at org.junit.runners.ParentRunner.access$000(ParentRunner.java:53) at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:229) at org.robolectric.RobolectricTestRunner$1.evaluate(RobolectricTestRunner.java:177) at org.junit.runners.ParentRunner.run(ParentRunner.java:309) at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50) at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197) 

Tuve un error similar a su 2 ª edición. Mi entorno se creó de acuerdo con http://www.youtube.com/watch?v=3mjcg5gfDLE

El ejemplo proporcionado funciona en mi Eclipse, pero cuando intenté vincular MyProjectTest a mi propia aplicación, apareció el segundo error que describiste.

El video describe la solución a las 6:00.

MyProjectTest -> Ejecutar como configuración -> JUnit -> MyProjectTestConfiguration -> Argumentos -> Haga clic en el botón de opción 'Otros' -> Espacio de trabajo -> seleccione

La casa de la toma es: si usted funciona sus pruebas robolectric para una diversa app, usted debe señalar el Direcotry de trabajo 'a él. Además, debe vincular su carpeta de prueba de MyProjectTest a una nueva carpeta de prueba en.

  • Prueba de unidad de Android con Retrofit / RxJava / Roboletric y Mockito
  • Android prueba: cómo comprobar un diálogo se muestra en la pantalla? (mediante ActivityInstrumentationTestCase2)
  • ActivityInstrumentationTestCase2 vs ActivityTestRule
  • Adaptador RecyclerView en la prueba de unidad
  • Ejecutar todas las pruebas de unidad en Android Studio
  • Android InstrumentationTestCase getFilesDir () devuelve null
  • ¿Cómo puedo crear pruebas en Android Studio?
  • Prueba de unidad en la función de extensión de Kotlin en las clases de SDK de Android
  • Cómo emular onLowMemory ()?
  • Java.lang.UnsatisfiedLinkError: dbopen
  • ¿Cómo burlar los gráficos de objetos de actividad de Dagger?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.