He leído en todas partes sobre lo geniales que son, pero por alguna razón parece que no puedo entender exactamente cómo se supone que debo probar algo. ¿Podría alguien publicar un fragmento de código de ejemplo y cómo lo probaría? Si no es mucho problema :)
php
unit-testing
testing
tdd
Déjalo ir
fuente
fuente
Respuestas:
Hay un tercer "marco", que es mucho más fácil de aprender, incluso más fácil que Simple Test, se llama phpt.
Puede encontrar una cartilla aquí: http://qa.php.net/write-test.php
Editar: Acabo de ver su solicitud de código de muestra.
Supongamos que tiene la siguiente función en un archivo llamado lib.php :
Realmente simple y directo, se devuelve el parámetro que ingresa. Así que veamos una prueba para esta función, llamaremos al archivo de prueba foo.phpt :
En pocas palabras, proporcionamos el parámetro
$bar
con valor"Hello World"
yvar_dump()
la respuesta de la función llamada afoo()
.Para ejecutar esta prueba, use:
pear run-test path/to/foo.phpt
Esto requiere una instalación funcional de PEAR en su sistema, lo cual es bastante común en la mayoría de las circunstancias. Si necesita instalarlo, le recomiendo instalar la última versión disponible. En caso de que necesite ayuda para configurarlo, no dude en preguntar (pero proporcione el sistema operativo, etc.).
fuente
run-tests
?Hay dos marcos que puede utilizar para las pruebas unitarias. Simpletest y PHPUnit , que prefiero. Lea los tutoriales sobre cómo escribir y ejecutar pruebas en la página de inicio de PHPUnit. Es bastante fácil y está bien descrito.
fuente
Puede hacer que las pruebas unitarias sean más efectivas cambiando su estilo de codificación para adaptarlo.
Recomiendo navegar por el Blog de pruebas de Google , en particular la publicación sobre cómo escribir código comprobable .
fuente
Hice la mía porque no tuve tiempo de aprender la forma de hacer las cosas de otra persona, esto me tomó unos 20 minutos para escribir, 10 para adaptarlo para publicarlo aquí.
Unittesting es muy útil para mí.
esto es un poco largo pero se explica solo y hay un ejemplo en la parte inferior.
Esto produce:
fuente
Obtenga PHPUnit. Es muy fácil de usar.
Luego comience con afirmaciones muy simples. Puede hacer mucho con AssertEquals antes de comenzar con cualquier otra cosa. Esa es una buena forma de mojarse los pies.
También puede intentar escribir su prueba primero (ya que le dio a su pregunta la etiqueta TDD) y luego escribir su código. Si no lo ha hecho antes, es una revelación.
fuente
Para pruebas Y documentación simples, php-doctest es bastante bueno y es una manera realmente fácil de comenzar, ya que no tiene que abrir un archivo separado. Imagina la siguiente función:
Si ahora ejecuta este archivo a través de phpdt (corredor de línea de comandos de php-doctest) se ejecutará 1 prueba. El doctest está contenido dentro del bloque <código>. Doctest se originó en Python y está bien para dar ejemplos útiles y ejecutables sobre cómo se supone que funciona el código. No puede usarlo exclusivamente porque el código en sí se llenará de casos de prueba, pero descubrí que es útil junto con una biblioteca tdd más formal: uso phpunit.
Esta primera respuesta aquí lo resume muy bien (no es unit vs doctest).
fuente
phpunit es prácticamente el marco de prueba unitario de facto para php. también hay DocTest (disponible como paquete PEAR) y algunos otros. php en sí mismo se prueba para regresiones y similares mediante pruebas phpt que también se pueden ejecutar a través de pear.
fuente
Las pruebas de codecepción son muy parecidas a las pruebas unitarias comunes, pero son mucho más poderosas en las cosas en las que necesita burlarse y tropezarse.
Aquí está la prueba del controlador de muestra. Observe la facilidad con la que se crean los apéndices. Con qué facilidad verifica que se haya invocado el método.
También hay otras cosas interesantes. Puede probar el estado de la base de datos, el sistema de archivos, etc.
fuente
Además de las excelentes sugerencias sobre marcos de prueba que ya se han dado, ¿está construyendo su aplicación con uno de los marcos web PHP que tiene pruebas automatizadas integradas, como Symfony o CakePHP ? A veces, tener un lugar para dejar caer sus métodos de prueba reduce la fricción inicial que algunas personas asocian con las pruebas automatizadas y TDD.
fuente
Demasiado para volver a publicar aquí, pero aquí hay un gran artículo sobre el uso de phpt . Cubre una serie de aspectos relacionados con phpt que a menudo se pasan por alto, por lo que podría valer la pena leerlo para ampliar su conocimiento de php más allá de simplemente escribir una prueba. Afortunadamente, el artículo también trata sobre pruebas de escritura.
Los principales puntos de discusión
fuente
Sé que ya hay mucha información aquí, pero dado que esto todavía aparece en las búsquedas de Google, también podría agregar Chinook Test Suite a la lista. Es un marco de prueba simple y pequeño.
Puede probar fácilmente sus clases con él y también crear objetos simulados. Ejecuta las pruebas a través de un navegador web y (todavía no) a través de una consola. En el navegador puede especificar qué clase de prueba o incluso qué método de prueba ejecutar. O simplemente puede ejecutar todas las pruebas.
Una captura de pantalla de la página de github:
Lo que me gusta de él es la forma en que afirma las pruebas. Esto se hace con las llamadas "afirmaciones fluidas". Ejemplo:
Y crear objetos simulados también es muy sencillo (con una sintaxis fluida como):
De todos modos, también se puede encontrar más información en la página de github con un ejemplo de código:
https://github.com/w00/Chinook-TestSuite
fuente