pruebas - phpunit tutorial
SimpleTest vs PHPunit (12)
Me preguntaba si alguien que tenga experiencia en estas dos cosas puede arrojar algo de luz sobre la diferencia significativa entre los dos, si hay alguno.
¿Alguna fortaleza específica de cada uno que lo hace adecuado para cualquier caso específico?
Baphled tiene un buen artículo sobre SimpleTest vs PHPUnit3 .
Bueno, hice un corredor de caso de prueba de UI basado en web phpUnit y lo hice disponible en sourceforge. Utiliza ajax y tiene una interfaz bastante buena también si quieres probarlo en sourceforge. El nombre del proyecto es phpunitwebui y el sitio web es http://phpunitwebui.sourceforge.net/
Como se ha señalado, se trata principalmente de una opción de preferencia, ya que ambos ejecutarán las pruebas para las que escribes e informarán los resultados.
La interfaz de usuario web Simpletest es muy útil, pero a veces también puede resultar engorroso. En mi proyecto actual, tendría que haber puesto más trabajo en un sistema para hacer que mi aplicación (una API) funcione con la interfaz web (configure apache correctamente, copie archivos en la raíz public_html, etc.) de lo que hubiera sido simplemente ejecutar phpunit desde el espacio de trabajo del eclipse. Por lo tanto, elijo PHPUnit. Además, el uso de PEAR fue una gran ventaja ya que no es necesario realizar un seguimiento manual de las actualizaciones. Simplemente ejecute pear upgrade
vez en cuando y PHPUnit se mantendrá actualizado.
Cuando hay miles de funciones para probar de una vez, phpunit es el camino a seguir, la prueba simple se está quedando corta cuando se basa en la web.
Todavía estoy usando web simple para pruebas a pequeña escala.
Pero ambos son buenos
Descubrí que SimpleTest era incluso más fácil de configurar que PHPUnit. Solo extráigalo y estará listo para continuar. Un beneficio de esto es si está trabajando en más de una máquina, ya que puede almacenar todo el marco de prueba de la misma manera que su código fuente, y así saber que está utilizando el mismo código de marco. Especialmente si lo modificas de alguna manera.
Por lo tanto, diría que una de las ventajas de SimpleTest es que es muy liviana y portátil.
SimpleTest también se envía con una GUI HTML muy simple, que es bastante fácil de ampliar si así lo desea. Por lo que sé, PHPUnit no incluye una GUI HTML, pero hay GUI: s disponibles para descargar, como Cool .
Esta pregunta es antigua, pero quiero agregar mi experiencia: PHPUnit parece ser el estándar ahora, pero si trabajas con un sistema heredado que usa muchas y muchas variables globales, puedes quedarte estancado desde el principio. Parece que no hay una buena manera de hacer pruebas con vars globales en PHPUnit, parece que tienes que establecer tus variables a través de $ GLOBALS, lo cual NO ES BUENO si tienes toneladas de archivos que establecen variables globales en todas partes. OK, algunos pueden decir que el problema está en el sistema heredado, pero eso no significa que no podamos hacer pruebas en dicho sistema. Con SimpleTest, tal cosa es simple. Supongo que si PHPUnit nos permite incluir un archivo globalmente, no dentro de ningún ámbito de clase / función, entonces tampoco sería un problema.
Otra solución prometedora es http://www.enhance-php.com , se ve bien :)
Esta pregunta está bastante anticuada, pero como todavía está recibiendo tráfico y respuestas, pensé en volver a plantear mi punto, aunque ya lo hice en algunas otras preguntas (más recientes).
Estoy realmente desconcertado de que SimpleTest todavía se considere una alternativa a phpunit. Tal vez estoy mal informado, pero por lo que he visto:
- PHPUnit es el estándar; la mayoría de los marcos lo usan (como Zend Framework (1 y 2), Cake, Agavi, incluso Symfony está abandonando su propio Framework en Symfony 2 para phpunit).
- PHPUnit está integrado en cada IDE de PHP (Eclipse, Netbeans, Zend Stuide, PHPStorm) y funciona muy bien.
- Simpletest tiene una extensión eclipse para PHP 5.1 (también conocido como antiguo) y nada más.
- PHPUnit funciona bien con todos los servidores de integración continua ya que genera todos los archivos de registro estándar para la cobertura de código y los informes de prueba.
- Simpletest no. Si bien este no es un gran problema para comenzar, te morderá mucho cuando dejes de "probar" y comiences a desarrollar software (sí, esa afirmación es provocativa :) No te lo tomes demasiado en serio).
- PHPUnit se mantiene de manera activa, es estable y funciona muy bien para cada base de código, cada escenario y cada forma en que desee escribir sus pruebas.
- (Subjetivo) PHPUnit proporciona informes de cobertura de código mucho más agradables que Simpletest
- Con PHPUnit también obtienes estos informes dentro de tu IDE ( Netbeans , Eclipse, ...)
- También hay un par de sugerencias para una
web interface to phpunit tests
.
Aún no he visto ningún argumento a favor de SimpleTest. No es aún más fácil de instalar ya que PHPUnit está disponible a través de pear:
pear channel-discover pear.phpunit.de
pear install phpunit/PHPUnit
y la "primera prueba" se ve más o menos igual.
A partir de PHPUnit 3.7
, es aún más fácil instalarlo simplemente usando el PHAR Archive
wget http://pear.phpunit.de/get/phpunit.phar
chmod +x phpunit-3.7.6.phar
o para Windows simplemente downloading el phar y corriendo:
php phpunit-.phar
o cuando usa el compositor compatible instale formas como
"require-dev": {
"phpunit/phpunit": "3.7.*"
}
a tu compositor. json.
Para todo lo que quieras probar, PHPUnit tendrá una solución y podrás encontrar ayuda prácticamente en cualquier lugar (SO, #phpunit irc channel en freenode, casi todos los desarrolladores de php;))
Por favor, corrígeme si he dicho algo mal o si he olvidado algo :)
Descripción general de las herramientas de prueba de PHP
Video: http://conference.phpnw.org.uk/phpnw11/schedule/sebastian-bergmann/
Diapositivas: http://www.slideshare.net/sebastian_bergmann/the-php-testers-toolbox-osi-days-2011
Menciona cosas como Atoum que se autodenomina: "¡Un marco de prueba de unidades simple, moderno e intuitivo para PHP!"
La divulgación completa
Originalmente escribí esta respuesta en enero de 2011, donde no tenía ninguna afiliación con ningún proyecto de prueba de PHP. Desde entonces me convertí en colaborador de PHPUnit.
Esto es desde el punto de vista de un desarrollador PHP muy informal:
Me tomó dos días entender PHPUnit, principalmente tratando de depurar en Eclipse, que finalmente me di por vencido.
Me tomó dos horas configurar Simpletest incluyendo depuración en Eclipse.
Tal vez encuentre los fallos de Simpletest en el futuro, pero hasta ahora hace bien lo que necesito: TestClasses, objetos simulados, depuración de código de prueba e interfaz web para obtener una instantánea rápida de la situación.
De nuevo: Esto desde el punto de vista de un usuario PHP muy informal (ni siquiera desarrollador :-)
La mitad de los puntos mencionados en la respuesta aceptada simplemente no son ciertos:
SimpleTest tiene
- la configuración más fácil (extraer a la carpeta, incluir y ejecutar)
- simplemente compruebe la carpeta en el control de versiones (intente hacer eso con phpunit hoy en día :))
- menos dependencias y muchas extensiones (webtester, formtester, auth)
- un buen reportero de cobertura de código, que es fácil de extender (puntos, nombres de funciones, colores)
- un resumen de cobertura de código (finalmente aterrizado en PHPUnit 4.x)
- un corredor web decente y un corredor web Ajax, con grupos y ejecuciones de archivos únicos
- aún mejor herramienta de diferencia (sin problemas de espacio en blanco o nueva línea)
- un adaptador / envoltorio para ejecutar SimpleTests por phpUnit y viceversa
- se mantiene activamente en GitHub: https://github.com/simpletest
- compatibilidad PHP5.4 +
La baja:
- no estándar de la industria (PHPUnit)
No he comprobado Simple Test por un tiempo, la última vez que tenía un plugin de eclipse, que es un factor importante para mí, pero no se ha actualizado durante mucho tiempo. Sebastian Bergmann todavía está trabajando muy activamente en PHPUnit, pero todavía le falta un buen complemento para eclipse, pero está incluido en el nuevo Zend Studio.
Prefiero PHPUnit ahora, pero cuando comencé utilicé SimpleTest ya que no siempre tenía acceso a la línea de comando. SimpleTest es bueno, pero lo único que realmente tiene sobre PHPUnit, en mi opinión, es el corredor de la web.
Las razones por las que me gusta PHPUnit son que se integra con otras herramientas de desarrollo de PHP, como phing (como SimpleTest), phpUnderControl y Xinc . A partir de la versión 3.0 tiene soporte de burla , se está desarrollando activamente y la documentación es excelente.
Realmente, la única manera de responder a esta pregunta es probando ambos por un tiempo y ver qué se adapta mejor a su estilo.
EDITAR: Phing ahora se integra con SimpleTest también.
- No pude entender cómo descargar e instalar PHPUnit.
Sin embargo, podría entender fácilmente cómo instalar SimpleTest.
(Por lo que puedo recordar, las instrucciones para PHPUnit dicen algo como "instálalo a través de PEAR y no daremos ninguna instrucción sobre cómo hacerlo de otra manera") ver:
- http://www.phpunit.de/manual/current/en/installation.html
Para SimpleTest , simplemente descárguelo y apúntelo desde su código.
Así que Simpletest ganó para mí.