Prueba de interfaz de usuario de Robotium para la aplicación con el cajón de navegación
Conseguimos la aplicación con el Navigation Drawer
de la biblioteca de support.v4
. Automatizamos las pruebas de la interfaz de usuario con Robotium
y todo está bien, pero el Navigation Drawer
puede congelarse de forma aleatoria para que algunas pruebas puedan fallar al azar.
Éste no es definitivamente un problema de Robotium
, porque vi cómo el Navigation Drawer
se congela en algunas otras aplicaciones en mi dispositivo, también en mis propias aplicaciones.
- Robotium - haciendo clic en las pestañas de la barra de acción
- Prueba de integración de Android: Robotium o UIAutomator?
- Cómo probar el evento swipe / fling usando jUnit en Android testcase
- (Robotium) Cómo seleccionar un RadioButton en un RadioGroup
- Haciendo clic en los elementos del menú de la barra de acción en Robotium
Ya he intentado arreglar para el Navigation Drawer
de la pregunta de esta pregunta: ¿Por qué DrawerLayout a veces falla al abrir?
Ayudó y heladas aleatorias disminuyó de 90% a alrededor de 10%, pero 10% de las pruebas pueden fallar y esto es muy malo, especialmente para la integración continua …
Puede ser que alguien ya solucionado este problema?
- Cómo correctamente mock HttpGet llamada en la prueba de Android
- ¿Por qué Robotium es más lento cuando realiza tareas sencillas de interfaz de usuario en comparación con el código nativo de Android?
- Utilice tanto InstrumentationTestRunner como AndroidJUnitRunner con Robotium y Espresso
- ¿Cómo hacer clic en el botón de "búsqueda" del teclado con Robotium?
- Prueba de Android usando logcat para la captura de eventos
- "La prueba no se ejecutó hasta la finalización." Motivo: 'La instrumentación ejecutada falló debido a' El proceso se estrelló. '' Mientras se ejecutan varios testcases
- ¿Cómo probar automáticamente que las aplicaciones se comportan como se espera con respecto a otras actividades?
- BDD Android UI marco de pruebas?
Encontré el mismo problema con nuestras pruebas Robotium y la solución con la que acabé de ir era simular un gesto de arrastre (cómo un usuario real abriría el cajón) en vez de intentar hacer clic en el conmutador del cajón o usar los métodos a solo
. Parecía notar los fallos intermitentes con más frecuencia en los dispositivos que ejecutan Android más antiguos que el SDK 18.
Coloqué este método en nuestra propia subclase de Solo
y no hemos tenido una prueba fallida ya que (más de cientos de carreras).
/** * Open the navigation drawer with a drag gesture. Click based triggering is * flaky on SDK < 18 */ public void openNavigationDrawer() { Point deviceSize = new Point(); getCurrentActivity().getWindowManager().getDefaultDisplay().getSize(deviceSize); int screenWidth = deviceSize.x; int screenHeight = deviceSize.y; int fromX = 0; int toX = screenWidth / 2; int fromY = screenHeight / 2; int toY = fromY; this.drag(fromX, toX, fromY, toY, 1); }
Estoy usando android.support.v4.widget.DrawerLayout
demasiado y no encontré ninguna manera de hacerlo simplemente .
Finalmente logré abrir el cajón usando el código que se muestra a continuación
/** * As we use app compat it seems Solo#setNavigationDrawer is not doing well * (drawer does not open, but the button is clicked) * * Same result for clickOnView(getView(android.R.id.home)) * * This code opens the navigation drawer on the main thread * Be aware : you need to provide your DrawerLayout id (you can do it in params) */ public void openCompatNavigationDrawer() { getInstrumentation().runOnMainSync(new Runnable() { @Override public void run() { ((DrawerLayout) mSolo.getView(R.id.drawer_layout)) .openDrawer(Gravity.LEFT); } }); }
Gist disponible aquí https://gist.github.com/quentin7b/9b51a3827c842417636b
Navegación abierta del cajón: solo.clickOnScreen(50, 50);
Elija el elemento de la lista en la navegación del cajón:
ListView listView = (ListView) solo.getView(R.id.left_drawer); View SwitchOrganizations = listView.getChildAt(0); solo.clickOnView(SwitchOrganizations);
- ¿Debe la llamada al método de superclase ser la primera instrucción?
- Problemas con EditText y teclado suave en un fragmento