icono_twiter icono LinkedIn
Rubén Aguilera Díaz-Heredero

Consultor tecnológico de desarrollo de proyectos informáticos.

Ingeniero en Informática, especialidad en Ingeniería del Software

Puedes encontrarme en Autentia: Ofrecemos servicios de soporte a desarrollo, factoría y formación

Somos expertos en Java/J2EE

Ver todos los tutoriales del autor

Fecha de publicación del tutorial: 2012-10-30

Tutorial visitado 2.619 veces Descargar en PDF
Robolectric: aplicando TDD en 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:


	com.pivotallabs
    robolectric
    1.0
    test

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.

A continuación puedes evaluarlo:

Regístrate para evaluarlo

Por favor, vota +1 o compártelo si te pareció interesante

Share |
Anímate y coméntanos lo que pienses sobre este TUTORIAL: