LinuxParty
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
-
PHP
- Eliminar el mensaje «Hemos detectado que su servidor está usando PHP el cual está obsoleto» en Joomla
- FacturaScripts 2015.046 ya disponible
- FacturaScripts 2018.03 ya disponible (y presencia en OpenExpo)
- Los puntos de referencia de rendimiento de PHP 7.3 se ven buenos, días antes de su lanzamiento
- 12 Usos útil de PHP desde la línea de comandos que todo usuario de Linux debería conocer
- Como migrar de Blogger a WordPress
- Cómo instalar Composer, el gestor de paquetes de PHP globalmente
- Instalar una versión vieja (downgrade) de PHP en CentOS
- Migrar de PHPNuke a Joomla 2.5.X, paso a paso.
- Pasos para actualizar Joomla 2.5 a Joomla 3.3
- Cómo tener varias versiones de PHP en un mismo servidor
- Generar documentos Word con PHP a través de PHPDocX, biblioteca PHP para dicho fin.
- 10 formas de hacer PHP más seguro.
- Introducción a PHPUnit, la herramienta para desglosar, probar y documentar el código
- VideoTutoriales: Curso de MongoDB con PHP en Español