Android – AssertionFailedError en el método startActivity en la clase de prueba de ActivityUnitTestCase

Estoy tratando de probar una actividad en un módulo. Estoy tratando de iniciar esta actividad en el método de prueba, pero siempre tengo un AssertionFailedError . Busqué este problema en la web pero no pude encontrar ninguna solución. Cualquier ayuda es apreciada.

Esta es mi clase de prueba:

 public class ContactActivityTest extends ActivityUnitTestCase<ContactActivity> { public ContactActivityTest() { super(ContactActivity.class); } @Override public void setUp() throws Exception { super.setUp(); } public void testWebViewHasNotSetBuiltInZoomControls() throws Exception { Intent intent = new Intent(getInstrumentation().getTargetContext(), ContactActivity.class); startActivity(intent, null, null); } @Override public void tearDown() throws Exception { super.tearDown(); } } 

Y este es el error:

 junit.framework.AssertionFailedError at android.test.ActivityUnitTestCase.startActivity(ActivityUnitTestCase.java:147) at com.modilisim.android.contact.ContactActivityTest.testWebViewHasNotSetBuiltInZoomControls(ContactActivityTest.java:29) at android.test.InstrumentationTestCase.runMethod(InstrumentationTestCase.java:214) at android.test.InstrumentationTestCase.runTest(InstrumentationTestCase.java:199) at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:191) at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:176) at android.test.InstrumentationTestRunner.onStart(InstrumentationTestRunner.java:555) at android.app.Instrumentation$InstrumentationThread.run(Instrumentation.java:1763) 

Saludos.

El método startActivity () de ActivityUnitTestCase sólo debe ser llamado en el subproceso principal.

Esto se puede hacer de las siguientes maneras:

  1. Utilice la anotación @UiThreadTest antes de su método de prueba:

     @UiThreadTest public void testWebViewHasNotSetBuiltInZoomControls() throws Exception { Intent intent = new Intent(getInstrumentation().getTargetContext(), ContactActivity.class); startActivity(intent, null, null); } 
  2. Utilice el método runOnMainSync de la clase Instrumentation:

     public void testWebViewHasNotSetBuiltInZoomControls() throws Exception { final Intent intent = new Intent(getInstrumentation().getTargetContext(), ContactActivity.class); getInstrumentation().runOnMainSync(new Runnable() { @Override public void run() { startActivity(intent, null, null); } }); } 

¿Por qué estoy bien?

  • ¿Por qué fallan las grandes pruebas de unidad de actividad de Android?
  • AndroidManifest en el directorio androidTest que se ignora
  • Prueba de DialogFragments con Robolectric
  • Cómo proporcionar archivos de datos para las pruebas de unidad de Android
  • Cómo obtener la salida de registro de Android mostrada con las pruebas de JUnit (utilizando JUnit nativo sin emulador)
  • Android RxJava 2 Prueba JUnit - getMainLooper en android.os.Looper no se burla de RuntimeException
  • JUnit prueba para la aplicación de Android con fragmentos
  • La prueba de Android JUnit de Simpe se cuelga en Eclipse
  • Android Studio 1.1, instalación de prueba junit simple
  • Android Eclipse Plugin: Prueba de Instrumentación Runner no especificado
  • Tratando de probar un módulo de Android en la aplicación MultiDex, com.android.test.runner.MultiDexTestRunner no se reconoce
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.