IronWoods.es

Desarrollo web

Blog / PHP / Comenzando con PHPUnit

PHPUnit viene de serie para hacer pruebas unitarias en los frameworks PHP. También podemos usarlo en proyectos a medida con PHP (Flat PHP), instalando de forma global o local.

Instalación global de PHPUnit en Ubuntu

Al comprobar si PHPUnit está instalado y su versión:

phpunit --version

Obtendremos un mensaje indicando que no se encuentra en el sistema y el comando para su instalación:

sudo apt install phpunit

O su versión actual en caso contrario.

Después de instalar o actualizar usaremos de nuevo el comando phpunit --version para comprobar que se hizo correctamente.

Instalación de PHPUnit en el proyecto

Agregaremos la librería al proyecto usando Composer, que deberá estar previamente instalado en el sistema.

La librería y sus dependencias suponen entre 2 y 3 Mb, de ficheros, en el directorio "vendor/".

Para instalar usamos un comando como:

composer require --dev phpunit/phpunit ^9.0

Si lo que necesitamos es actualizar PHPUnit usaremos:

composer update phpunit

Si PHPUnit está instalado correctamente con phpunit --version vemos su versión. Ahora, para poder hacer pruebas unitarias, lo cargamos en los ficheros de pruebas y extendemos la clase TestCase.

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 las pruebas unitarias, sería algo así:


<?php

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

use \PHPUnit\Framework\TestCase;
use \ironwoods\xxx\Foo;

class FooTest extends TestCase
{
    ...
}

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" no debe ser incluido.

Ejecución

Abrir la terminal en el directorio donde están las clases con las pruebas y escribir:

phpunit FooTest.php

Este comando funcionará si tenemos phpunit instalado globalmente o un alias definido para la instalación local, en otro caso y, dentro del directorio "test/":

php ../vendor/bin/phpunit FooTest.php

PHPUnit 9.5.1 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 "FooTest".


WARNINGS!

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


La instrucción anterior puede mejorarse con algunas opciones, por ejemplo:

phpunit MiClaseTest.php --colors=always --repeat 10

Mostrar el resultado de la ejecución en color y repetir el test 10 veces (mejor no repetir hasta que pase en verde).

Para crear una alias del comando, en el directorio "test/":

alias phpunit='php ../vendor/bin/phpunit'

Ahora que PHPUnit funciona, podemos empezar a escribir algunas pruebas, para esto lo mejor es ir a la documentación de PHPUnit.