prueba si un botón inicia una nueva actividad en android junit (pref sin robotium)?

No puedo encontrar ninguna buena ayuda en esto. Tengo una actividad simple con apenas algunos botones encendido y necesito probar si vuelven a dirigir a la nueva página correcta (actividad).

public void testButton() { button.requestFocus(); button.performClick(); } 

Realmente no tengo idea más allá de eso. Los tutoriales son muy poco útiles al hacer esto: /

Necesita ActivityMonitor , le ayuda a moniotor actividad recién abierta durante la instrumentación, echa un vistazo al pseudo código a continuación:

 public void testOpenNextActivity() { // register next activity that need to be monitored. ActivityMonitor activityMonitor = getInstrumentation().addMonitor(NextActivity.class.getName(), null, false); // open current activity. MyActivity myActivity = getActivity(); final Button button = (Button) myActivity.findViewById(com.company.R.id.open_next_activity); myActivity.runOnUiThread(new Runnable() { @Override public void run() { // click button and open next activity. button.performClick(); } }); //Watch for the timeout //example values 5000 if in ms, or 5 if it's in seconds. NextActivity nextActivity = getInstrumentation().waitForMonitorWithTimeout(activityMonitor, 5000); // next activity is opened and captured. assertNotNull(nextActivity); nextActivity .finish(); } 
 NextActivity nextActivity = getInstrumentation().waitForMonitorWithTimeout(activityMonitor, 5); 

El parámetro 5 que se menciona en el método de respuesta anterior está en milisegundos no en segundos. Por lo tanto, si es 5, a veces se falla el caso de test Debido a que en 5 milisegundos no puede cargar la siguiente actividad. Así que 5000 o 10000 milisegundos definitivamente funcionarán mejor. En la documentación que han dado en segundos Pero, de hecho, es en milisegundos. Así que el siguiente método funcionará mejor que el método anterior.

 NextActivity nextActivity = getInstrumentation().waitForMonitorWithTimeout(activityMonitor, 10000); 

Para una prueba de ActivityUnitTestCase , puede utilizar getStartedActivityIntent() para comprobar la intención que se pasó a una llamada de startActivity() .

 protected Intent waitForStartedActivityIntent(int timeout) { long endTime = SystemClock.uptimeMillis() + timeout; while (SystemClock.uptimeMillis() <= endTime) { Intent intent = getStartedActivityIntent(); if (intent != null) { return intent; } } return null; } 

Crédito: waitFor … la lógica se inspiró en esta respuesta

Nota: con un ActivityUnitTestCase , la actividad realmente no se inicia; la llamada es devorada por un padre simulador establecido por el caso de prueba.

Puede utilizar ActivityMonitor o Instrumentation para conocer la actividad de destino que se inicia o no como a continuación

 public void testButton() { Instrumentation.ActivityMonitor activityMonitor = getInstrumentation() .addMonitor(TargetActivity.class.getName(), null, false); //button.performClick(); // Dont use this method TouchUtils.clickView(this, button); TargetActivity targetActivity = (TargetActivity) activityMonitor.waitForActivity(); // By using ActivityMonitor // TargetActivity targetActivity = (TargetActivity) activityMonitor.waitForActivityWithTimeout(5);// It also works // TargetActivity targetActivity = (TargetActivity) getInstrumentation().waitForMonitor(activityMonitor); // By using Instrumentation // TargetActivity targetActivity = (TargetActivity) getInstrumentation().waitForMonitorWithTimeout(activityMonitor, 5); // It also works assertNotNull("Target Activity is not launched", targetActivity); } 
  • Excepción de tiempo de ejecución en las pruebas de Android JUnit
  • ¿Cómo puedo crear una suite de pruebas de Android que sólo ejecuta pruebas especificadas en una o más clases?
  • No se pueden ejecutar pruebas unitarias en Android Studio
  • Error en la instrumentación Android: error de aserción
  • Diferencia entre el método runOnUiThread () y la anotación @UiThreadTest
  • Prácticas recomendadas para la prueba de unidades de Android?
  • Eclipse lanza java.lang.NullPointerException en la creación de la configuración de prueba de android junit
  • Error en la prueba JUnit del servicio
  • Prueba de la unidad Android con Robolectric lanza error AndroidManifest.xml no se encuentra o no es un archivo
  • JUnit assertThat: comprueba que Object sea igual a String
  • Servicio Android no lanzado por JUnit test
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.