Inicio > PHP > Pruebas unitarias con phpunit

PRUEBAS UNITARIAS CON PHPUNIT

10/08/2019PHP ME GUSTA

 

En este post voy a hablar de las pruebas unitarias con phpunit.
Una prueba unitaria consiste en comprobar el correcto funcionamiento de una funcionalidad desarrollada. Por ejemplo si se ha programado la funcionalidad de añadir usuarios a una plataforma, se harían varias pruebas unitarias para saber si los usuarios se guardan bien en la plataforma.
En php se pueden relizar dichas pruebas unitarias usando la herramienta PhpUnit, framework creado por Sebastian Bergmann.
PHPunit también se usa para pruebas tdd.
PhpUnit utiliza aserciones para verificar que el comportamiento de la funcionalidad que hay que probar. El objetivo de las pruebas unitarias es demostrar que funcionamiento de cada funcionalidad es correcta y encuentran problemas en las fases iniciales del desarrollo de software.
Después de esta pequeña introducción voy a hablar de PhpUnit:

  • Las pruebas se realizan en clases cuyo nombre va seguido de la palabra Test: UserTest, PurchaseTest, etc...
  • Dicha clase hereda de TestCase.
  • Las pruebas son métodos públicos y toman como nombre test: testAddUser,testDeleteProduct, etc...
  • También se pueden usar anotaciones en el método que se quiere probar.
  • Dentro de los métodos de prueba están las aserciones, que se usan para determinar si el resultado coincide con lo esperado.


Ejemplo de una prueba sencilla:

use PHPUnit\Framework\TestCase;
class StackTest extends TestCase
{
    public function testPushAndPop()
    {
        $stack = [];
        $this->assertSame(0, count($stack));

        array_push($stack, 'foo');
        $this->assertSame('foo', $stack[count($stack)-1]);
        $this->assertSame(1, count($stack));

        $this->assertSame('foo', array_pop($stack));
        $this->assertSame(0, count($stack));
    }
}
PhpUnit permite probar un método o métodos que tienen dependencias con otros métodos, ya que la mayoría de funcionalidades dependen de varios métodos y no de uno solo, para indicar la dependencia se usa la anotación @depends.

Ejemplo de prueba con dependencias:

use PHPUnit\Framework\TestCase;

class StackTest extends TestCase
{
    public function testEmpty()
    {
        $stack = [];
        $this->assertEmpty($stack);

        return $stack;
    }

    /**
     * @depends testEmpty
     */
    public function testPush(array $stack)
    {
        array_push($stack, 'foo');
        $this->assertSame('foo', $stack[count($stack)-1]);
        $this->assertNotEmpty($stack);

        return $stack;
    }

    /**
     * @depends testPush
     */
    public function testPop(array $stack)
    {
        $this->assertSame('foo', array_pop($stack));
        $this->assertEmpty($stack);
    }
}


Por último decir que para lanzar las pruebas hay que ir a la línea de comandos y ejecutar: phpunit nombreClaseTest.php y se mostrará el resultado de las pruebas.


 


Comentarios

No hay comentarios en este artículo.