IronWoods.es

Desarrollo web

Blog / PHP / Comenzando con PHPUnit

PHPUnit ya viene integrada en los frameworks PHP. Voy a explicar cómo añadir la herramienta para hacer test unitarios en proyectos a medida con PHP (Flat PHP).

Arrancando...

Podemos ejecutar los test unitarios que creemos en la terminal o mediante nuestro IDE / editor si tienen soporte para hacerlo. En cualquier caso, podemos instalar PHPUnit de forma global o sólo en nuestro proyecto.

Instalación global de PHPUnit

Debes tener instalado Composer. Se usará para instalar PHPUnit globalmente.


Hay que comprobar si PHPUnit está instalado (si lo está y la versión es muy antigua, actualizaremos):

phpunit --version


Como lo tengo instado y actualizado. Obtengo lo siguiente:

PHPUnit 6.5.4 by Sebastian Bergmann and contributors.


Siempre que instalamos o actualizamos usaremos el comando anterior para comprobar que se hizo correctamente.


Comando de instalación de PHPUnit:

composer require --dev phpunit/phpunit ^6.5


Comando para actualizar PHPUnit (si lo instalamos previamente con Composer):

composer update phpunit


Si ya teníamos una versión antigua y además la instalamos como PHAR (este fue mi caso), debemos eliminar esta instalación, ya que no podemos actualizar con Composer, pero si instalar, aunque el sistema usará la instalación con PHAR en este caso. Para tener PHPUnit actualizado vía Composer, eliminaremos los ficheros de la instalación anterior, se encuentran en el directorio de instalación de PHP. eliminar los ficheros "phpunit.phar" y "phpunit" del directorio y de "bin/", si los hubiera. Comprobar la versión instalada. Si no realizamos antes la nueva instalación, no se reconoce el comando, si la hicimos, debe aparecer la nueva versión.

Instalación de PHPUnit en el proyecto

Hay que agregar la librería al proyecto. Nuevamente mediante Composer.

Se descarga la librería y sus dependencias (bastantes ficheros) en el directorio "vendor/" y te permitirá usar Composer para gestionar la carga de tus ficheros. Yo usaría esta opción para proyectos grandes (aprovechas el autoload de Composer y seguramente reutilices dependencias), para librerías que vas a publicar o simplemente si quieres ver el código de lo que se instala.

Si ya usas Composer en el proyecto para gestionar dependencias, ya sabes cómo va, sólo hay que añadir la de PHPUnit en el "composer.json". En caso contrario sigue los siguientes pasos:

1. Crea el fichero "composer.json" en la raíz del proyecto.

2. Añade la dependencia necesaria al fichero anterior. Este será su contenido básico:

{

"require": {

"phpunit/phpunit": ">= 6.5"

}

}

3. Instalar dependencias:

composer install

4. Cargar "autoload.php" en el fichero con las pruebas:


<?php namespace ironwoods\xxx\test;


require '../vendor/autoload.php';

...

5. Verificar versión de PHPUnit

6. Ejecutar PHPUnit


Si los 5 primeros pasos fueron bien: felicidades. El último, lo incluí para tener la secuencia completa, y arrojará !warnings¡. Aún no hay pruebas escritas...

Escribir las pruebas unitarias

Crearemos una clase con test para cada clase a testear y un directorio para las pruebas, para organizar un poco el código. Así, para la clase Foo, creamos la clase FooTest, dentro del directorio "test/", que extenderá la clase necesaria para implementar los test unitarios, así tendremos algo como esto:


<?php namespace ironwoods\xxx\test;


require '../vendor/autoload.php';

require '../foo.php';


use \PHPUnit\Framework\TestCase;

use \ironwoods\xxx\Foo;


class FooTest extends TestCase

{

...

} //class



Si no incluimos PHPUnit en el proyecto, es decir que usaremos la instalación global para ejecutar los test, el require del fichero "autoload.php" está de más.

Ejecución

Abrir la terminal en el directorio donde están las clases con los test y escribir phpunit nombreficheroconlaclase.php. Ejemplo:

phpunit FooTest.php

PHPUnit 6.5.4 by Sebastian Bergmann and contributors.

W 1 / 1 (100%)


Time: 330 ms, Memory: 4.00MB


There was 1 warning:


1) Warning

No test found in class "ironwoods\xxx\test\FooTest".


WARNINGS!

test: 1, Assertions: 0, Warnings: 1.


PHPUnit funciona, pero no hemos escrito ningún test, para esto lo mejor es ir a la documentación de PHPUnit (ver abajo).

Enlaces de interés:

Documentación de PHPUnit.

Página de instalación de Composer


20-12-2017

Sitio libre de scripts. Solo efectos HTML / CSS