Robolectric: aplicando TDD en Android

0
8346

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.

DEJA UNA RESPUESTA

Por favor ingrese su comentario!

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

Por favor ingrese su nombre aquí

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

  • Responsable:
  • Finalidad:
  • Legitimación:
  • Destinatarios:
  • Derechos:
  • Más información: Puedes ampliar información acerca de la protección de datos en el siguiente enlace:política de privacidad