Instalar el plugin SimpleTest para Eclipse

Por si a caso usted quiere hacer pruebas con SimpleTest (un framework para pruebas unitarias en PHP) y tiene Eclipse 3.2 instalado, una manera simple de probarlo es de instalar el plug-in SimpleTest para Eclipse. Este articulo prueba de simplificarle la tarea, y esta basado en la página en Inglés: http://simpletest.org/en/extension_eclipse.html

Tengo entendido que el aporte mayor de SimpleTest en comparación con PHPUnit (o PHPUnit2) es que se puede usar un “navegador virtual” que permite de hacer pruebas directamente con resultados HTML de escripts PHP. Un poco (pero no enteramente) como lo hace ahora Selenium IDE, dentro de Firefox, pero en este caso no necesitamos un navegador, lo que facilita considerablemente las pruebas automatisadas de interfaz.

Primero, se tiene que seguir, dentro de Eclipse, los menus Help > Software Updates… y seleccionar la pestaña Available Software.

Como usted seguro no habrá probado anteriormente de instalarlo, tiene que agregar un site de descarga del plugin. Haz click por el botón Add Site… y entra como URL http://www.simpletest.org/eclipse/ y valide.

Esto brinda el URL http://www.simpletest.org/eclipse/ en la lista a la izquierda. Seleccionelo y se abre, ofreciendo una categoría Uncategorized. Seleccione esta categoría y en particular el Simpletest plug-in que hay a dentro, y haz click por Install…

Después de confirmaciones de licencia (es la licencia Eclipse que se accepta para el plug-in, no para el SimpleTest (que es bajo licencia LGPL), el sistema les pide para reiniciar Eclipse. No se lo que occurre cuando no se reinicia pero tengo entendido que no es recomendable.

Reinicia el sistema y… no aparece nada nuevo! Por supuesto, el SimpleTest plug-in es un plug-in chiquito, y no hace mucho, pero ante todo se tiene que configurar. Para esto, vamos a Window > Preferences > SimpleTest y configuramos los 3 elementos necesarios: Php.exe file (que bajo un sistema Ubuntu será /usr/bin/php si usted ha instalado el paquete php5-cli), php.ini file (que será, bajo el mismo sistema, /etc/php5/cli/php.ini) y Test File Suffix (que será simplemente .php pero podría ser .test.php si todos sus tests están con esta extensión). Los demás parámetros no son necesarios.

Apunte que el SimpleTest plug-in en realidad instala el SimpleTest entero, y lo instala en una carpeta de Eclipse y agrega, en el contexto de Eclipse, esta librería dentro del include path. Esto quiere decir que si pruebo de cargar SimpleTest dentro de mis escripts de test, no va a funcionar (doble declaración). Lo vemos mas allá.

Ahora que tengo configurado mi plug-in, que puedo hacer? Pues no mucho. Lo único que puedo hacer es hacer click derecho por algún script que tengo y decir Run as… > SimpleTest. Y esto lanzará mi escript de test incluyendo la librería SimpleTest por defecto. Lo interesante ahí es que el output de esta prueba aparece directamente en una nueva zona de Eclipse que se dedica a eso.

Por ejemplo, quiero empezar a crear pruebas simples para Dokeos. Donde inicio mi trabajo?

Pues la lógica primera de SimpleTest y PHPUnit incita a tener una carpeta aparte que se llame tests y dentro de cual voy a tener todas mis pruebas, con un fichero (una clase) diferente para cada tipo de prueba. Una clase de pruebas podrá probar muchas cosas, pero se considera que una clase debería tener solo la prueba de una funcionalidad (sea una funcionalidad simple pero importante, o otra mucho más compleja que incluye otras, pero nunca dos pruebas que no tienen nada que ver dentro de una sola clase).

Usando Eclipse, creo una carpeta tests dentro de la cual creo mi primer fichero: dummy.test.php

<?php
//require_once(‘simpletest/autorun.php’);

class TestDummy extends UnitTestCase
{
function testDummyValues()
{
$this->assertFalse(false);
$this->assertTrue(false);
}
}
?>

He tomado un ejemplo muy básico aquí, que no tiene nada que ver con Dokeos. Usted se dará cuenta que tengo un require_once comentado en primera línea. Esto es lo que le comentaba más arriba, de que Eclipse ya incluye la librería SimpleTest, por eso no se tiene que incluir más.

Después declaro una clase que extende la clase UnitTestCase (hay otras clases de base que extender, por ejemplo para pruebas navegador) y un método testDummyValues() que va a hacer las pruebas realmente.

Ahora, esto es mi prueba básica. Para ver como se comporta SimpleTest, lo único que me falta es hacer click-derecho por el script y Run as > SimpleTest y… ya tengo mi salida (como ustedes se imaginarán mirando al ejemplo, la primera prueba resulta bien, la segunda no:

Salida de SimpleTest plug-in en Eclipse

Salida de SimpleTest plug-in en Eclipse

Me retorna el número de fallas de mis pruebas, así que el número de errores generadas, y me indica donde ha occurrido este error.

A cambio, si todo funciona, me sale esto (yo he desplegado los detalles pero sino solo indica el nombre del fichero de la prueba):

SimpleTest output on success

SimpleTest output on success

Ya esta para esta vez. Mas allá probablamente explicaré como hacer una prueba de funcionalidad con Dokeos…

Puede seguir la guía simple en Inglés de inicio con SimpleTest aquí, pero se supone que conoce las bases de unit testing con PHP…

Comments