Prueba JUnit con Robolectric: java.lang.InstantiationException

Al intentar ejecutar una prueba de JUnit en un proyecto de la Biblioteca de Android con Robolectric obtengo el siguiente error:

java.lang.RuntimeException: java.lang.InstantiationException at com.xtremelabs.robolectric.ApplicationResolver.newApplicationInstance(ApplicationResolver.java:56) at com.xtremelabs.robolectric.ApplicationResolver.resolveApplication(ApplicationResolver.java:36) at com.xtremelabs.robolectric.RobolectricTestRunner.createApplication(RobolectricTestRunner.java:246) at com.xtremelabs.robolectric.RobolectricTestRunner.setupApplicationState(RobolectricTestRunner.java:233) at com.xtremelabs.robolectric.RobolectricTestRunner.internalBeforeTest(RobolectricTestRunner.java:177) at com.xtremelabs.robolectric.RobolectricTestRunner.methodBlock(RobolectricTestRunner.java:157) at org.junit.runners.BlockJUnit4ClassRunner.runNotIgnored(BlockJUnit4ClassRunner.java:79) at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:71) at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:49) at org.junit.runners.ParentRunner$3.run(ParentRunner.java:193) at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:52) at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:191) at org.junit.runners.ParentRunner.access$000(ParentRunner.java:42) at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:184) at org.junit.runners.ParentRunner.run(ParentRunner.java:236) 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) Caused by: java.lang.InstantiationException at sun.reflect.InstantiationExceptionConstructorAccessorImpl.newInstance(Unknown Source) at java.lang.reflect.Constructor.newInstance(Unknown Source) at java.lang.Class.newInstance0(Unknown Source) at java.lang.Class.newInstance(Unknown Source) at com.xtremelabs.robolectric.ApplicationResolver.newApplicationInstance(ApplicationResolver.java:54) ... 20 more 

Mi primera idea fue que cometí un error dentro de la prueba, por lo que simplifiqué la ejecución de la prueba tanto como sea posible:

 import static org.junit.Assert.*; import org.junit.Test; import org.junit.runner.RunWith; import com.xtremelabs.robolectric.RobolectricTestRunner; @RunWith(RobolectricTestRunner.class) public class CommonDataTest { @Test public void test(){ assertTrue(true); } } 

Pero todavía consigo el mismo error. He creado el proyecto tal como se describe aquí: http://robolectric.org/eclipse-quick-start/ Lo extraño es que funcionó con otros proyectos de la Biblioteca de Android sin ningún problema.

¡Cualquier ayuda sería apreciada! ¡Gracias de antemano!

Parecía que Robolectric era incapaz de crear la aplicación de mi biblioteca por lo que reemplazó el TestRunner:

 import org.junit.runners.model.InitializationError; import android.app.Application; import com.xtremelabs.robolectric.RobolectricTestRunner; public class MyTestRunner extends RobolectricTestRunner { public MyTestRunner(Class<?> testClass) throws InitializationError { super(testClass); } @Override protected Application createApplication() { return new Application() { }; } } 

Y lo utilizó en lugar del RobolectricTestRunner:

 @RunWith(MyTestRunner.class) 

Las pruebas se están ejecutando correctamente ahora.

  • Creación de la notificación de InstrumentationTestCase
  • Unidad que prueba la lógica de la aplicación de Android
  • Android JUnit4 Pruebas - ¿Dónde obtener el contexto de?
  • ¿Cómo hacer simples pruebas junit de vainilla en android? Cómo obtener un error al hacer
  • Prueba de DialogFragments con Robolectric
  • NoClassDefFoundError al intentar ejecutar pruebas unitarias en Android Studio
  • ¿Cómo volver a ejecutar la prueba fallada en Espresso? - lluvia de ideas
  • Android TestRunner falla debido a la excepción de IllegalState
  • ¿Cómo ejecutar pruebas de unidad para Android no está en el dispositivo o emulador?
  • Prueba de unidad Android: connectedAndroidTest no ejecuta mi caso de prueba
  • AndroidManifest en el directorio androidTest que se ignora
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.