Robotium Tutorial: Android Marco de pruebas con ejemplo

⚡ Resumen inteligente

Robotium es un código abierto Android Marco de automatización de pruebas que impulsa aplicaciones nativas e híbridas a través de su interfaz de usuario, permitiendo a un probador escribir scripts de escenarios funcionales, de sistema y de aceptación que abarcan varios Android actividades.

  • 🔘 Clase principal: Solo expone los métodos de clic, búsqueda, arrastre y aserción que cada Robotium llamadas de casos de prueba.
  • ☑️ Compatible con sistemas de caja negra: Las pruebas se vinculan a los componentes de la interfaz de usuario en tiempo de ejecución, por lo que se requiere un conocimiento mínimo del código fuente de la aplicación.
  • Procedimiento de cuatro pasos: Diseñar las especificaciones de la prueba, escribir el programa de prueba, ejecutarlo en un dispositivo y, a continuación, recopilar el resultado.
  • 🧪 Ejemplo trabajado: Un saludo completoAndroidLa clase de prueba comprueba el texto visible, la actividad actual y el botón de Inicio.
  • 🛠️ Dos modos de funcionamiento: Inicie las pruebas desde el IDE o desde una terminal con el comando adb shell am instrument.
  • ⚙️ Estado actual: Robotium 5.6.3 sigue siendo la última versión, por lo que la nueva Android Los proyectos suelen combinarlo o reemplazarlo con Espresso.

Robotium Tutorial

¿Qué es Robotium?

Robotium es un Android Marco de pruebas que automatiza los casos de prueba para aplicaciones nativas e híbridas. Robotium, un desarrollador puede crear casos de prueba de GUI automatizados y robustos para Android aplicaciones. Un desarrollador también puede escribir escenarios de pruebas funcionales, de sistema y de aceptación que abarquen varias Android actividades.

Robotium Marco de prueba

El Android El marco de pruebas presenta las limitaciones que se enumeran a continuación.

  • No se pueden manejar múltiples actividades
  • El rendimiento de ejecución de la prueba es lento
  • Los casos de prueba son complejos y difíciles de implementar.

El Robotium El marco es la mejor opción para realizar pruebas en un Android .

Robotium es un marco de código abierto y se considera una extensión del Android marco de pruebas. Usando Robotium, un desarrollador puede crear casos de prueba de GUI automatizados y robustos para Android aplicaciones. Además, un desarrollador puede escribir escenarios de pruebas funcionales, de sistema y de aceptación que abarquen múltiples Android actividades.

La tabla a continuación resume las características avanzadas que distinguen Robotium desde el marco de instrumentación simple.

Características avanzadas de Robotium comparado con el estándar Android marco de instrumentación

Características avanzadas de Robotium

Robotium Clases de casos de prueba

Robotium envía un pequeño conjunto de clases para pruebas, y el ejemplo del artículo importa el legado com.jayway.android.robotium.solo paquete. Estas clases admiten casos de prueba que abarcan múltiples actividades y Solo está integrado con ActivityInstrumentationTestCase2.

Nota: corriente Robotium Las versiones exponen la misma clase bajo la versión más corta. com.robotium.solo paquete, mientras que la coordenada Maven se mantuvo com.jayway.android.robotium:robotium-solo. Ajuste la importación para que coincida con la versión JAR que realmente agregue al proyecto.

El siguiente diagrama muestra cómo la clase Solo se sitúa por encima del caso de prueba de instrumentación.

Clase individual integrada con ActivityInstrumentationTestCase2 en un Robotium caso de prueba

Integración de Robotium y ActivityInstrumentationTestCase2

Un probador puede escribir casos de prueba sin conocimiento del diseño de la aplicación, lo que hace que el enfoque sea una forma de prueba de caja negra. Esa es una ventaja sobresaliente en comparación con el simple Android clases de casos de prueba.

Instrucciones de uso Robotium

Para utilizar Robotium en tu Android Para probar el proyecto, debe seguir los pasos que se indican a continuación.

Pasos necesarios para agregar y usar Robotium dentro de un Android proyecto de prueba

¿Cómo Usar? Robotium

Para garantizar la calidad de su Android Para la solicitud, siga el procedimiento de cuatro pasos que se detalla a continuación.

  • Diseñar la especificación de la prueba
  • Desarrollar el programa de pruebas
  • Ejecutar el caso de prueba en el dispositivo de destino.
  • Recopilar el resultado de la prueba

El diagrama de flujo que aparece a continuación ordena esas cuatro etapas.

Diagrama de flujo de las cuatro etapas Android procedimiento de prueba de la aplicación

Android procedimiento de prueba de la aplicación

PASO 1) Especificación de prueba de diseño

Este es el primer paso para probar su aplicación. En este paso se define el objetivo que se va a probar. Android La aplicación tiene muchos elementos que deben probarse, como la interfaz de usuario, las actividades, los componentes y los servicios. Definir claramente el objetivo ayuda a lograr una amplia cobertura de pruebas.

  • Planificar los tipos de pruebas que deben realizarse (pruebas unitarias, pruebas funcionales, pruebas de sistema).
  • Diseñar cada caso de prueba para una cobertura máxima mientras se mantieneping El número de casos de prueba es pequeño. Cuanto más código pruebes, mayor será la probabilidad de detectar errores precozmente.

PASO 2) Escribir el programa de prueba

Esta sección le guía a través de la redacción de un Android programa de prueba usando Android JUnit pruebas y Robotium. Suponga que ya ha desarrollado un Android programa llamado HolaAndroidEste programa tiene las funciones que se describen a continuación.

  • Muestra el texto “¡Hola mundo!” en la pantalla.
  • Mostrar un saludoAndroid mensaje cuando el usuario pulsa el botón “Inicio”.

La siguiente captura de pantalla muestra la aplicación que se está probando ejecutándose en un dispositivo.

HolaAndroid Aplicación bajo prueba que muestra el texto "Hola mundo" y el botón "Iniciar".

HolaAndroid Postulación

Requisitos del sistema

  • El Android La plataforma se envía con un sistema preintegrado. JUnit 3 marco, que es lo que ActivityInstrumentationTestCase2 se basa en.
  • Para crear un Android proyecto de prueba de EclipseSu máquina necesita un funcionamiento Android Instalación del SDK.
  • Instalar el actual Android SDK de la plataforma en lugar de una versión anterior fija.

Las capturas de pantalla de este tutorial utilizan Eclipse con el complemento ADT, que era el conjunto de herramientas estándar cuando se escribió el ejemplo. Eclipse ADT ya no es compatible, por lo que en una máquina moderna tendrías que... descargar Android Studio en su lugar y reutilizar el mismo código de prueba dentro de un Gradle .

Para el Robotium marco de pruebas, descárguelo Robotium biblioteca de la Robotium página del proyecto.

Crear una Android Proyecto de prueba

  • Haga clic en Archivo -> Nuevo -> Otro
  • Elija Android -> Android Pruebe el proyecto como se muestra en la siguiente figura y, a continuación, seleccione Siguiente.

Eclipse Asistente para nuevo proyecto con Android Proyecto de prueba seleccionado

Crear un nuevo Android proyecto de prueba

Escribe el nombre de tu proyecto de prueba. Por convención, el proyecto de prueba debería llamarse “Hola”.AndroidPrueba".

Eclipse Diálogo con el proyecto de prueba llamado HelloAndroidPrueba siguiendo la convención de nomenclatura

Agregue el nombre del proyecto de prueba según la convención de nomenclatura.

Seleccione la aplicación de destino que se va a probar. En este caso es Hello.Android, luego haga clic en Finalizar.

Eclipse Paso del asistente para seleccionar HolaAndroid como la aplicación objetivo bajo prueba

Seleccione la aplicación de destino que se va a probar.

Crear conjuntos de pruebas

Según sus especificaciones de prueba, ahora puede crear conjuntos de pruebas para su programa de prueba. Puede elegir entre varias opciones. pruebas de software marcos de trabajo. Este tutorial utiliza el estándar. Android marco de prueba ActivityInstrumentationTestCase2. Para probar con Robotium, añade el Robotium archivo de biblioteca a un libs directorio dentro de la carpeta de tu proyecto.

Un caso de prueba define el entorno utilizado para ejecutar múltiples pruebas. Para definir un caso de prueba, siga la estructura del programa que se muestra a continuación.

  • Implementar una subclase de TestCase.
  • Defina variables de instancia que almacenen el estado del dispositivo.
  • Inicialice el estado del dispositivo sobrescribiendo el método setUp().
  • Limpia después de una prueba sobrescribiendo tearDown().

El diagrama que aparece a continuación relaciona esa estructura con el programa de prueba que está a punto de escribir.

Estructura de una Robotium Programa de prueba que muestra la configuración, los métodos de prueba y el desmontaje.

Estructura del programa de prueba

package com.example.helloandroid.test;

import com.example.helloandroid.HelloAndroid;
import com.jayway.android.robotium.solo.Solo;
import android.test.ActivityInstrumentationTestCase2;
import android.widget.TextView;

public class HelloAndroidTest extends ActivityInstrumentationTestCase2 <HelloAndroid> {
    
	private HelloAndroid mActivity;
	private TextView mView;
	private String resourceString;
	private Solo solo;
	
	public HelloAndroidTest () {
		// TODO Auto-generated constructor stub
		super("com.example.helloandroid",HelloAndroid.class);	
	}
	
	 @Override
	protected void setUp() throws Exception {
		// TODO Auto-generated method stub
	//	super.setUp();
		 
	 	mActivity = this.getActivity();
		solo = new Solo(getInstrumentation(),getActivity());
		mView = (TextView) mActivity.findViewById(com.example.helloandroid.R.id.textview2);
		resourceString = mActivity.getString(com.example.helloandroid.R.string.hello_world);
		
	}
	 
	 @Override
	protected void tearDown() throws Exception {
		// TODO Auto-generated method stub
		//super.tearDown();
		solo.finishOpenedActivities();
	}
	
	public void testPrecondition() {
		assertNotNull(mView);
	}
	
	/* test Target application contains a text display "Hello World!"*/
	public void testSearchText() {
		assertEquals(resourceString,(String) mView.getText());
	}
	
	/* test HelloAndroid Activity on target application is exist*/
	public void testCurrentActivity() throws Exception  {
    	solo.assertCurrentActivity("wrong activity", HelloAndroid.class);
    }
    
	/* test Application UI contains "Start" button */
	/* send event click button to target application */
    public void testSearchButton() throws Exception {
    	boolean found = solo.searchButton("Start");
    	solo.clickOnButton("Start");
    	assertTrue(found);
    }

	

}

Agregar casos de prueba

  • En el mismo paquete que el conjunto de pruebas, cree las clases TestCase.
  • Para probar una actividad determinada, por ejemplo, HolaAndroid, crea un caso de prueba que extienda ActivityInstrumentationTestCase2Android>.
  • Dentro de esa clase, el evaluador obtiene la actividad que se está probando a través del método getActivity().
  • Crea libremente una prueba para la actividad añadiendo un método llamado “prueba + nombre del método original”.
  • Dentro del método de prueba, el probador puede usar Android JUnit funciones para comparar el valor real con el valor esperado. Estos métodos se muestran a continuación.

La tabla que aparece a continuación enumera los métodos de aserción e interacción más utilizados en ambos marcos de trabajo.

Métodos de ejemplo de la Robotium Clase individual y la Android marco de prueba

Métodos de ejemplo de Robotium y conectar Android marco de prueba

El conjunto de pruebas anterior verifica que la interfaz gráfica de usuario de la aplicación muestre el texto "¡Hola mundo!" y contenga un botón llamado "Iniciar".

PASO 3) Ejecutar prueba

Una vez que haya terminado de escribir su programa de prueba, ejecute la prueba siguiendo los pasos que se indican a continuación.

  • Conecta un Android Conecta el dispositivo a tu PC o inicia un emulador si no dispones de un dispositivo real.
  • En tu IDE, haz clic con el botón derecho en el proyecto de prueba y elige Ejecutar como → Android Prueba unitaria.

La captura de pantalla que aparece a continuación muestra cómo se inicia la ejecución de la prueba desde el IDE.

Lanzamiento del Robotium programa de prueba como un Android Prueba unitaria desde el IDE

Ejecutando el programa de prueba

Además de ejecutar la prueba desde el IDE, puede ejecutarla desde la línea de comandos. En este programa de prueba, el paquete de prueba es com.example.helloandroid.test. En una terminal de Linux, utilice el siguiente comando para ejecutar todas las pruebas de ese paquete.

$ adb shell am instrument -w -e package com.example.helloandroid.test

PASO 4) Obtener el resultado de la prueba

Una vez ejecutada la prueba, se recopilan los resultados de la misma.

En este programa de pruebas se ejecutan cuatro métodos de prueba. En la ejecución que se muestra a continuación, todos los casos de prueba se superaron.

Salida del resultado de la prueba que muestra los cuatro Robotium Los casos de prueba se superan

Salida del resultado de la prueba cuando todos los casos de prueba se superan

Si una prueba falla, se muestra el resultado e indica qué pruebas fallaron.

Salida del resultado de la prueba que enumera el Robotium casos de prueba que fallaron

Salida del resultado de la prueba cuando falla un caso de prueba

Fuente Code Ejemplos

Este artículo incluye ejemplos de código fuente que le ayudarán a seguir el tutorial con mayor claridad y a comprender rápidamente los detalles técnicos.

Si quieres comparar Robotium con las otras opciones en este espacio, vea el prueba de aplicaciones móviles guía, el Appium tutoriales y el resumen de herramientas de prueba de aplicaciones móviles.

Preguntas Frecuentes

Robotium La versión 5.6.3 sigue siendo la última publicada y el desarrollo activo se detuvo hace años. El framework aún funciona y el artefacto aún se encuentra en Maven Central, pero... Android Los proyectos normalmente eligen Espresso, el cual Google mantiene.

Robotium Es un marco de trabajo de caja negra que se vincula a los widgets en tiempo de ejecución y requiere poco conocimiento del código fuente. Espresso is GoogleHerramienta de caja blanca que se sincroniza con el hilo de la interfaz de usuario y espera acceso al código de la aplicación.

Robotium Controla una aplicación a la vez, no puede manejar Flash o contenido web fuera de un WebView de forma fiable, no ofrece grabación integrada en el JAR de código abierto y su dependencia de clases de instrumentación obsoletas complica las aplicaciones modernas. Gradle construcciones

Declarar androidTestImplementation 'com.jayway.android.robotium:robotium-solo:5.6.3' en el archivo de compilación del módulo, o elimine el robotium-solo JAR cobren libs y referenciarlo como una dependencia de archivo.

Sí. Robotium Las pruebas son pruebas de instrumentación estándar, por lo que el mismo archivo APK se ejecuta tanto en un emulador como en un dispositivo físico. Se prefiere el hardware real para las comprobaciones de gestos, sensores y rendimiento, ya que la sincronización del emulador puede variar.

Robotium Se adapta a escenarios funcionales, de sistema y de aceptación del usuario a nivel de interfaz de usuario. No sustituye a las pruebas unitarias, que se ejecutan más rápido en la JVM, ni a las pruebas más amplias. tipos de pruebas de software Todavía se necesita un lanzamiento.

El aprendizaje automático se utiliza para crear localizadores autorreparables que resisten los cambios de diseño, comparaciones visuales que detectan errores de renderizado y detección de pruebas inestables que priorizan las repeticiones. Estas herramientas reducen el mantenimiento, pero un humano sigue decidiendo qué comportamientos son relevantes.

Copiloto de GitHub Puede generar un andamiaje para la configuración de Solo, los métodos tearDown y asserting desde una clase de actividad. RevLea atentamente la sugerencia, ya que puede generar importaciones de paquetes heredados o aserciones que la aplicación nunca satisface.

Resumir este post con: