La herramienta de prueba de línea de comando PHPUnit se llama mediante el comando phpunit. El siguiente código muestra cómo ejecutar pruebas a través de la herramienta de prueba de línea de comandos PHPUnit.
phpunitArrayTest
PHPUnit 2.3.0 por Sebastian Bergmann
Tiempo: 0.067288
OK (2 pruebas)
Para cada prueba, la herramienta de prueba de línea de comando PHPUnit imprime un carácter que indica el proceso:
· Una prueba exitosa imprime ".".
·Al ejecutar el método de prueba, se produce un error de afirmación y se imprime "F".
·Al ejecutar el método de prueba, se produce un error y se imprime "E".
·La prueba no se completa o la prueba no imprime "I" (consulte el capítulo "Pruebas no terminadas" al final de este libro).
PHPUnit puede distinguir entre fallas y errores. Una falla es una violación de la aserción de PHPUnit y un error es una excepción inesperada o un error de PHP. A veces esta distinción es útil porque los errores son más fáciles de corregir que los fracasos. Si tiene una lista larga de problemas, es una buena idea resolver todos los errores primero y luego ver si persiste alguna falla.
Veamos algunas de las opciones de la herramienta de prueba de línea de comando de código a continuación:
phpunit --help
PHPUnit 2.3.0 por Sebastian Bergmann
Uso: phpunit [cambios] UnitTest [UnitTest.php]
--coverage-data <archivo> Escribe datos de cobertura de código en formato sin formato en un archivo.
--coverage-html <archivo> Escribe datos de cobertura de código en formato HTML en un archivo.
--coverage-text <archivo> Escribe datos de cobertura de código en formato de texto en un archivo.
--testdox-html <archivo> Escribe documentación ágil en formato HTML en un archivo.
--testdox-text <archivo> Escribe documentación ágil en formato Texto al archivo.
--log-xml <archivo> Registra el progreso de la prueba en formato XML en un archivo.
--loader <loader> Implementación de TestSuiteLoader a utilizar.
--skeleton Genera la clase esqueleto UnitTest para Unit en Unit.php.
--wait Espera a que se presione una tecla después de cada prueba.
--help Imprime esta información de uso.
--version Imprime la versión y sale.
phpunit UnitTest
ejecuta las pruebas proporcionadas por la clase UnitTest, que debe definirse en el archivo fuente UnitTest.php.
La clase UnitTest debe heredar la clase PHPUnit2_Framework_TestCase, o proporcionar un conjunto de métodos estáticos públicos y devolver la clase del objeto PHPUnit2_Framework_Test (por ejemplo, una instancia de la clase PHPUnit2_Framework_TestSuite)
phpunit UnitTest UnitTest.php
ejecuta la prueba proporcionada por la clase UnitTest, que se define en el comando en el archivo fuente especificado (UnitTest.php).
--coverage-data, --coverage-html y --coverage-text
controlan el análisis y la recopilación de información de cobertura de código para ejecutar pruebas (consulte la sección Análisis de cobertura de código al final de este libro)
--testdox-html y --testdox- text
genera documentación ágil para ejecutar pruebas en formato HTML o texto plano (consulte el capítulo "Otros usos de las pruebas" al final de este libro)
--log-xml
genera archivos de registro en formato XML para ejecutar pruebas.
El siguiente ejemplo muestra el archivo de registro XML generado para las pruebas en ArrayTest.
<?xml versión="1.0" codificación="UTF-8"?>
<conjuntos de pruebas>
<testsuite name="ArrayTest" pruebas="2" fallos="0" errores="0" tiempo="0.020026">
<testcase nombre="testNewArrayIsEmpty" class="ArrayTest" time="0.014449"/>
<testcase name="testArrayContainsAnElement" class="ArrayTest" time="0.005577"/>
</conjunto de pruebas>
</testsuites>
El siguiente archivo de registro XML se genera para dos pruebas de la clase de prueba denominada FailureErrorTest, una es testFailure y la otra es testError. Esto muestra cómo los fallos y los errores se representan por separado.
<?xml versión="1.0" codificación="UTF-8"?>
<conjuntos de pruebas>
<testsuite name="FailureErrorTest" pruebas="2" fallos="1" errores="1" tiempo="0.013603">
<nombre del caso de prueba="testFailure" class="FailureErrorTest" time="0.011872">
<mensaje de error="" tipo="PHPUnit2_Framework_AssertionFailedError"></error>
</caso de prueba>
<nombre del caso de prueba="testError" clase="FailureErrorTest" time="0.001731">
<mensaje de error="" tipo="Excepción"></error>
</caso de prueba>
</conjunto de pruebas>
</conjuntos de pruebas>
--loader
especifica el cargador del conjunto de pruebas que se utilizará.
El cargador del conjunto de pruebas estándar busca archivos fuente en el directorio de trabajo actual y en la ruta definida por la directiva de configuración include_path de PHP. De acuerdo con las reglas de nomenclatura de PEAR, el archivo fuente asignado a un nombre de clase en el formato Project_Package_Class es Project/Package/Class.php.
--skeleton
genera un esqueleto para una clase de caso de prueba llamada UnitTest (en el archivo UnitTest.php) para la clase Unit (en el archivo Unit.php). Para cada método de la clase original, se proporciona un caso de prueba sin terminar en la clase de caso de prueba generada (consulte la sección "Pruebas sin terminar" al final de este libro).
El siguiente ejemplo muestra cómo generar una clase de prueba de esqueleto para una clase denominada Muestra.
phpunit --skeleton Muestra
PHPUnit 2.3.0 por Sebastián Bergmann.
Escribí el esqueleto de la clase de prueba para Sample
Pruebademuestra.php.
Prueba de muestra de phpunit
PHPUnit 2.3.0 por Sebastián Bergmann.
I
Tiempo: 0,007268
Hubo 1 caso de prueba incompleto:
1) método de muestra de prueba (prueba de muestra)
¡¡¡Bien, pero casos de prueba incompletos!!!
Ejecución de pruebas: 1, casos de prueba incompletos: 1.
Cuando escribe pruebas para código existente, debe repetir muchos de los mismos fragmentos de código, como:
función pública testSampleMethod( ) {}
PHPUnit puede ayudarlo a analizar el código existente y generar A Marco para clases de casos de prueba.
--wait
Al final de cada prueba, espere a que se presione una tecla. Esto es útil especialmente si está ejecutando pruebas en una ventana donde solo se ejecuta la prueba en todo momento.
Consejo: cuando hay un error de sintaxis PHP en el código que se está probando, la prueba de la interfaz de texto saldrá directamente sin generar ningún mensaje de error. El cargador del conjunto de pruebas estándar comprueba los archivos fuente del conjunto de pruebas en busca de errores de sintaxis de PHP; sin embargo, no comprueba los archivos fuente incluidos en el conjunto de pruebas en busca de errores de sintaxis. Las versiones futuras de PHPUnit abordarán este problema utilizando clases de intérprete PHP en espacio aislado.