LinuxParty

Ratio: 1 / 5

Inicio activadoInicio desactivadoInicio desactivadoInicio desactivadoInicio desactivado
 

La mayoría de la gente sabe que las pruebas de sus sitios web es una buena idea, pero después de algún tiempo de pruebas puede llegar a ser tedioso. ¿Y si una gran cantidad de este proceso de pruebas se automatizan? Automatizado el proceso no tiene que ir a través de todas las funciones de forma manual, una y otra vez, para asegurarse de que todavía funciona después de actualizar el código? Aquí es donde las pruebas unitarias entran en acción, para automatizar el proceso de prueba.

Unit hace que sea más fácil probar, y sobre todo más seguro, de modificar su código, ya que las capturas de cualquier irregularidad en el comportamiento (es decir, bugs) pueden ser introducidos en el nuevo código. En este artículo usted aprenderá los fundamentos absolutos de las pruebas unitarias con PHPUnit y lo fácil que es empezar a usarlo,  guiándole a través del proceso de escribir su primera prueba.

Antes de que pueda comenzar a escribir su primera prueba de Unit, es necesario tener instalado PHPUnit. Puede ser fácilmente instalado usando el instalador de PEAR, y el proceso está documentado en el manual en línea de PHPUnit en http://www.phpunit.de/manual/current/en/installation.html.

Escribir la primera prueba

Ahora es el momento de scribir su primera prueba! Para empezar, se necesita algo para probar, así que para el primer ejemplo he escrito una clase de PHP muy simple que representa a un usuario:

<?php
class User {
    protected $name;
 
    public function getName() {
        return $this->name;
    }
 
    public function setName($name) {
        $this->name = $name;
    }
 
    public function talk() {
        return "Hello world!";
    }
}

Digamos que usted quiere asegurarse de que el usuario siempre manda saludos; sería devastador por ejemplo, si ella comenzó a maullar como un gato de repente!

Para ello, tiene que hacer una nueva clase de prueba, que he nombrado arbitrariamente UserTest. No importa como llame sus clases de prueba, pero por lo general es una buena idea nombrarlos después de las clases que está probando.

Para crear la clase de prueba, es necesario incluir la clase que está probando, así como la funcionalidad de carga automática de PHPUnit. A continuación, defina la clase de prueba que se extiende PHPUnit_Framework_TestCase.

<?php
require_once "PHPUnit/Autoload.php";
require_once "User.php";
 
class UserTest extends PHPUnit_Framework_TestCase
{
}

Esta es la clase en la que usted va a escribir para sus pruebas, y cada prueba tendrá su propio método.

El método de los assertEquals() definido en PHPUnit_Framework_TestCase se limita a lo que iba a suponer, que afirma que algo es igual o no. Desde UserTest es una subclase de PHPUnit_Framework_TestCase, puede usarlo con $this.

Para garantizar que el usuario dice un saludo apropiado, escriba el siguiente método:

<?php
...
class UserTest extends PHPUnit_Framework_TestCase
{
    // test the talk method
    public function testTalk() {
        // make an instance of the user
        $user = new User();
 
        // use assertEquals to ensure the greeting is what you
        $expected = "Hello world!";
        $actual = $user->talk();
        $this->assertEquals($expected, $actual);
    }
}

Instalación y desmontaje

La necesidad de instalar un nuevo usuario en cada método de prueba puede llegar a ser bastante tedioso. Aquí es donde los accesorios de PHPUnit pueden ayudar. Un accesorio es cuando se configura un estado determinado y después de todas las pruebas del estado se restablecen de nuevo a la manera que era. ¿Cómo funciona esto?

Digamos que usted tiene su objeto $user y reemplaza el método setup() heredado:

<?php
...
class UserTest extends PHPUnit_Framework_TestCase
{
    protected $user;
...
    protected function setUp() {
        $this->user = new User();
        $this->user->setName("Tom");
    }
}

Aquí usted ha ejemplarizado el usuario y establecer su nombre a Tom.

Cuando haya terminado con todas las pruebas que usted podría querer desarmar el usuario; para ello se puede anular el método tearDown():

<?php
...
class UserTest extends PHPUnit_Framework_TestCase
{
...
    protected function tearDown() {
        unset($this->user);
    }
...
}

Los métodos setup() y tearDown() los métodos son llamados por PHPUnit antes y después de cada prueba, por lo que puede pasar una instancia del usuario en el método de ensayo. testTalk() ahora se convierte en:

<?php
...
class UserTest extends PHPUnit_Framework_TestCase
{
...
    public function testTalk() {
        $expected = "Hello world!";
        $actual = $this->user->talk();
        $this->assertEquals($expected, $actual);
    }
}

Ejecución de pruebas

Ahora que tiene una clase de prueba que define todas las pruebas, ¿no sería agradable para ejecutarlos? Si ha instalado con éxito todo, usted debería ser capaz de ejecutar sólo las pruebas desde un terminal.

michelle@testbed:~$ phpunit UnitTest UserTest.php
PHPUnit 3.6.3 by Sebastian Bergmann.

.

Time: 0 seconds, Memory: 5.75Mb

OK (1 test, 1 assertion)

¡Felicitaciones! Ahora ha escrito y ejecutado su primera prueba de Unit con PHPUnit!

¿Ves el pequeño punto allí? Para cada prueba tendrá un carácter que indica el resultado. Los caracteres son los siguientes:

 . - Impreso cuando una prueba es satisfactoria.
 F - Impreso cuando falla una afirmación.
 E - Impreso cuando se produce un error durante la ejecución de la prueba.
 S - Impreso cuando la prueba se ha omitido.
 I - Impreso cuando la prueba está marcada como incompleta.

En este momento de lo más importantes que tiene que preocuparse es del punto y de la F, ya que indican si la prueba ha sido un éxito o un fracaso.

<?php
class User {
...
public function talk() {
return "blubb";
}
}

Ahora ejecutar la prueba como lo hacía antes.

michelle@testbed:~$ phpunit UnitTest UserTest.php
PHPUnit 3.6.3 by Sebastian Bergmann.

F

Time: 0 seconds, Memory: 5.75Mb

There was 1 failure:

1) UserTest::testTalk
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-Hello World!
+blubb

/PHPUnit introduction/tests/UserTest.php:23

FAILURES!
Tests: 1, Assertions: 1, Failures: 1.

Como se puede ver, hay un símbolo F para indicar el fracaso. También hay más información sobre el fallo donde se puede ver que no pudo afirmar que las dos cadenas son iguales; donde se esperaba "Hello World!", aparece "blubb".

RESUMEN.

En este artículo has descubierto que no es tan difícil empezar a hacer pruebas unitarias . Los fundamentos son muy simples. Sin embargo , hay mucho más de lo que parece . Esta situación sencilla debería ser suficiente para que pueda empezar a escribir sus propias pruebas, pero trata de expandirlo, a recibir los errores y fallar en las prueba. Pruebe ampliando la clase de usuario y escribir pruebas adicionales para ello.

Algunos consejos útiles que puedo ofrecer que le ayudará a lo largo del camino son:

  •  Trate de llamar phpunit --help en la terminal para ver qué se puede hacer con PHPUnit .
  • Si usted se está preguntando cómo probar algo específico , el manual PHPUnit es realmente muy bueno. Mencioné brevemente accesorios, y no hay una descripción completa de ellos en el manual.
  • La sección del manual que afirmaciones realmente rocas cuando se está empezando. Asegúrese de comprobar que funciona.


Si quieres descargar el código de prueba de este artículo para experimentar, que está disponible en GitHub para hacer lo que quieras.

Espero que este tutorial te ayudó para empezar con PHPUnit . Pruébelo, aprender de sus errores , no tenga miedo de hacer preguntas , y sobre todo, ¡diviértase!

Mirate también:

Getting Started with PHPUnit

Pin It

Escribir un comentario


Código de seguridad
Refescar



Redes:



 

Suscribete / Newsletter

Suscribete a nuestras Newsletter y periódicamente recibirás un resumen de las noticias publicadas.

Donar a LinuxParty

Probablemente te niegues, pero.. ¿Podrías ayudarnos con una donación?


Tutorial de Linux

Nos obligan a moslestarte con la obviedad de que este sitio utiliza Cookies. Ver política