Robolectric: aplicando TDD en Android

En este tutorial os enseñamos un framework que nos permite ejecutar test en Android sin necesidad de emulador ni dispositivo físico lo que favorece la aplicación de TDD en nuestros desarrollos con Android

Robolectric: aplicando TDD en Android

0. Índice de
contenidos.

1. Entorno

Este tutorial está escrito usando el siguiente entorno:

  • Hardware: Portátil Mac Book Pro 17″ (2,6 Ghz Intel Core i7, 8 GB DDR3)
  • Sistema Operativo: Mac OS X Snow Leopard 10.6.4
  • Robolectric 1.0

2. Introducción

Robolectric es un framework que simula la interfaz gráfica de un emulador de Android permitiéndonos ejecutar test en la propia máquina virtual de Java y ahorrándonos el tiempo de arranque del emulador cada vez que queremos ejecutar algún test. Este framework también nos ayuda a poder implementar TDD en proyectos de Android.

3. Vamos a probarlo

Para probar el framework nos vamos a basar en el proyecto maven de Android que ya creamos en este tutorial. Para poder utilizar Robolectric lo único que tenemos que hacer es añadir la siguiente dependencia a nuestro pom.xml:

<dependency>  
    <groupid>com.pivotallabs</groupid>  
    <artifactid>robolectric</artifactid>  
    <version>1.0</version>  
    <scope>test</scope>  
</dependency>   

Ahora creamos la clase de test con el siguiente código:

package com.autentia;


import org.junit.Assert;
import org.junit.Test;
import org.junit.runner.RunWith;

import android.widget.Button;
import android.widget.EditText;

import com.xtremelabs.robolectric.RobolectricTestRunner;

@RunWith(RobolectricTestRunner.class)
public class CalcActivityRobolectricTest {

	private CalcActivity activity;
	private Button btnResult;
	private EditText strOp1;
	private EditText strOp2;
	private EditText strOperation;
	private EditText strResult;
	
	@Test
	public void shoulbeAddTwoNumbers() throws Exception{
		activity = new CalcActivity();
		activity.onCreate(null);
		btnResult = (Button) activity.findViewById(R.id.btnResult);
		strOp1 = (EditText) activity.findViewById(R.id.strOp1);
		strOp1.setText("3.0");
		strOp2 = (EditText) activity.findViewById(R.id.strOp2);
		strOp2.setText("4.0");
		strOperation = (EditText) activity.findViewById(R.id.strOperation);
		strOperation.setText("1");
		strResult = (EditText) activity.findViewById(R.id.strResult);
		btnResult.performClick();
		String result = strResult.getText().toString();
		Assert.assertEquals(result, "7.0");
	}

}

Como se puede apreciar es un test normal de Junit 4, lo único que lo diferencia es la anotación @RunWith(RobolectricTestRunner.class). No tenemos que aprender a utilizar un nuevo framework de pruebas porque nos permite implementar nuestro test con código propio de Android.

Ahora si ejecutamos mvn test en nuestro terminal veremos como el test pasa correctamente sin necesidad de levantar ningún emulador, con lo que se ahorra mucho tiempo de ejecución de los test.

Otra de las ventajas que presenta este framework es que nos permite aplicar TDD a nuestros desarrollos con Android, dado que podemos implementar casos de uso que interactuen con la interfaz gráfica sin que nuestros test presente ningún problema de ejecución.

También nos permite ejecutar los test sin necesidad de definir el InstrumentationTestRunner en el archivo AndroidManifest ni tener que utilizar la librería de test de Android que solo funciona con un dispositivo levantado.

4. Conclusiones

Como hemos visto Robolectric es una alternativa muy a tener en cuenta a la hora de testear nuestros desarrollos y poder aplicar los principios de TDD a nuestros desarrollos con Android.

Cualquier duda o sugerencia en la zona de comentarios.

Saludos.

Comentarios

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

He leído y acepto la política de privacidad

Información básica acerca de la protección de datos

  • Responsable: IZERTIS S.A.
  • Finalidad: Envío información de carácter administrativa, técnica, organizativa y/o comercial sobre los productos y servicios sobre los que se nos consulta.
  • Legitimación: Consentimiento del interesado
  • Destinatarios: Otras empresas del Grupo IZERTIS. Encargados del tratamiento.
  • Derechos: Acceso, rectificación, supresión, cancelación, limitación y portabilidad de los datos.
  • Más información: Puedes ampliar información acerca de la protección de datos en el siguiente enlace:política de privacidad

Consultor tecnológico de desarrollo de proyectos informáticos.
Ingeniero en Informática, especialidad en Ingeniería del Software.

¿Quieres publicar en Adictos al trabajo?

Te puede interesar

22/06/2026

Juan Antonio Jiménez Torres

Vamos a instrumentalizar un SDD para un microservicio bancario. En este artículo sobre SDD - Spec Driven Development, instrumentalizado sobre OpenSpec vamos a construir una PoC de algo más serio que una tabla periódica. Un microservicio bancario muy simplificado que gestione cuentas y permita hacer transferencias

16/06/2026

Juan Antonio Jiménez Torres

Este es el segundo artículo sobre SDD, Spec Driven Development, instrumentalizado sobre OpenSpec. Pero esta vez nos acercaremos usando softwere gratuito. Por un lado OpenCode en lugar de ClaudeCode y usando el modelo gratuito Gemma4 de Google en lugar de otros de pago.

08/06/2026

Juan Antonio Jiménez Torres

Aprenderemos sobre SDD – Spec Driven Development instrumentalizado sobre OpenSpec. Haremos un primer acercamiento usando ClaudeCode con Sonnet, para luego, en un artículo posterior pasarnos a la versión gratuita de OpenCode con Gemma4