SpeedTrap informa sobre pruebas PHPUnit de ejecución lenta directamente en la consola.
Muchos factores afectan el tiempo de ejecución de la prueba. Una prueba que no esté aislada adecuadamente de la latencia variable (base de datos, red, etc.) e incluso de la carga básica en la máquina de prueba hará que los tiempos de ejecución de la prueba fluctúen.
SpeedTrap ayuda a identificar pruebas lentas , pero no puede explicar por qué esas pruebas son lentas. Considere usar Blackfire.io para perfilar el conjunto de pruebas e identificar específicamente el código lento.
SpeedTrap se instala usando Composer. Agréguelo como una dependencia require-dev
:
composer require --dev johnkary/phpunit-speedtrap
Habilítelo con todos los valores predeterminados agregando el siguiente código al archivo phpunit.xml
de su proyecto:
<phpunit bootstrap="proveedor/autoload.php"> ... <extensiones> <extensión clase="JohnKaryPHPUnitExtensionSpeedTrap" /> </extensiones> </phpunidad>
Ahora ejecute el conjunto de pruebas. Si una o más ejecuciones de pruebas exceden el umbral de lentitud (500 ms de forma predeterminada), SpeedTrap informará sobre esas pruebas en la consola después de que se hayan completado todas las pruebas.
SpeedTrap también admite estos parámetros:
slowThreshold : número de milisegundos en los que una prueba se considera "lenta" (predeterminado: 500 ms)
reportLength : número de pruebas lentas incluidas en el informe (predeterminado: 10 pruebas)
Cada parámetro se establece en phpunit.xml
:
<phpunit bootstrap="vendor/autoload.php"><!-- ... otra configuración de suite aquí... --><extensiones> <extensión clase="JohnKaryPHPUnitExtensionSpeedTrap"> <argumentos> <matriz> <elemento clave="umbral lento"> <entero>500</entero> </elemento> <elemento clave="longituddelinforme"> <entero>10</entero> </elemento> </matriz> </argumentos> </extensión> </extensiones> </phpunidad>
Algunos proyectos tienen algunas pruebas complejas que tardan mucho en ejecutarse. Es posible establecer un umbral de lentitud diferente para casos de prueba individuales.
La anotación @slowThreshold
puede establecer un umbral de lentitud personalizado para cada caso de prueba. Este número puede ser mayor o menor que el umbral predeterminado y se utiliza en lugar del umbral predeterminado para esa prueba específica.
la clase SomeTestCase extiende PHPUnitFrameworkTestCase {/** * @slowThreshold 5000 */función pública testLongRunningProcess() {// Código que tarda más en ejecutarse} }
Configurar @slowThreshold 0
nunca informará que la prueba es lenta.
Perfiles SpeedTrap para pruebas lentas cuando está habilitado en phpunit.xml. Pero usar una variable de entorno llamada PHPUNIT_SPEEDTRAP
puede habilitar o deshabilitar la extensión:
$ PHPUNIT_SPEEDTRAP="disabled" ./vendor/bin/phpunit
Travis CI es popular para ejecutar pruebas en la nube después de enviar código nuevo a un repositorio.
Paso 1) Habilite SpeedTrap en phpunit.xml, pero configure PHPUNIT_SPEEDTRAP="disabled"
para deshabilitar la creación de perfiles al ejecutar pruebas.
<phpunit bootstrap="proveedor/autoload.php"> ... <php> <env nombre="PHPUNIT_SPEEDTRAP" valor="deshabilitado" /> </php> <extensiones> <extensión clase="JohnKaryPHPUnitExtensionSpeedTrap" /> </extensiones> </phpunidad>
Paso 2) Configure .travis.yml
con PHPUNIT_SPEEDTRAP="enabled"
para perfilar pruebas lentas cuando se ejecuta en Travis CI:
idioma: phpphp: - entorno 7.3: - PHPUNIT_SPEEDTRAP="habilitado"
Paso 3) Vea el resultado de la compilación de Travis CI y lea el informe de lentitud impreso en la consola.
Documentación de Travis CI: variables de entorno
Paso 1) Habilite SpeedTrap en phpunit.xml. El informe de lentitud se generará durante todas las ejecuciones del conjunto de pruebas.
<phpunit bootstrap="proveedor/autoload.php"> ... <extensiones> <extensión clase="JohnKaryPHPUnitExtensionSpeedTrap" /> </extensiones> </phpunidad>
Paso 2) Configure .travis.yml
con PHPUNIT_SPEEDTRAP="disabled"
para desactivar la creación de perfiles cuando se ejecuta en Travis CI:
idioma: phpphp: - entorno 7.3: - PHPUNIT_SPEEDTRAP="deshabilitado"
Paso 3) Vea el resultado de la compilación de Travis CI y confirme que el informe de lentitud no esté impreso en la consola.
Útil cuando sólo desea perfilar pruebas lentas de vez en cuando.
Paso 1) Configure phpunit.xml para habilitar SpeedTrap, pero deshabilite el perfil de lentitud configurando PHPUNIT_SPEEDTRAP="disabled"
de esta manera:
<phpunit bootstrap="proveedor/autoload.php"> ... <php> <env nombre="PHPUNIT_SPEEDTRAP" valor="deshabilitado" /> </php> <extensiones> <extensión clase="JohnKaryPHPUnitExtensionSpeedTrap" /> </extensiones> </phpunidad>
Paso 2) Al ejecutar phpunit
desde la línea de comandos, habilite el perfil de lentitud solo para esta ejecución pasando la variable de entorno PHPUNIT_SPEEDTRAP="enabled"
de esta manera:
$ PHPUNIT_SPEEDTRAP=habilitado ./vendor/bin/phpunit
Symfony Framework viene con el paquete symfony/phpunit-bridge que instala su propia versión de PHPUnit e ignora lo que está definido en el archivo compositor.json o compositor.lock de su proyecto. Vea las versiones de PHPUnit que instala con el comando ls vendor/bin/.phpunit/
Symfony/phpunit-bridge permite que la variable de entorno SYMFONY_PHPUNIT_REQUIRE
defina dependencias adicionales al instalar phpunit.
La forma más sencilla de configurar variables de entorno para el script simple-phpunit
es a través de phpunit.xml.dist:
<phpunit bootstrap="proveedor/autoload.php"> <php> <env nombre="SYMFONY_PHPUNIT_REQUIRE" valor="johnkary/phpunit-speedtrap:^4"/> <env nombre="SYMFONY_PHPUNIT_VERSION" valor="9"/> </php> <extensiones> <extensión clase="JohnKaryPHPUnitExtensionSpeedTrap" /> </extensiones> </phpunidad>
Usando el ejemplo anterior, ejecutar vendor/bin/simple-phpunit
ahora instalará la última versión de PHPUnit 9 y requerirá la última versión de phpunit-speedtrap v4.
Siga estos pasos para agregar nuevas funciones o desarrollar su propia bifurcación:
# Get source code (or replace with your fork URL) $ git checkout https://github.com/johnkary/phpunit-speedtrap.git phpunit-speedtrap # Install dev dependencies $ cd phpunit-speedtrap $ composer install # Run test suite to verify code runs as expected $ vendor/bin/phpunit
SpeedTrap se inspiró en la opción --profile
de RSpec que muestra comentarios sobre pruebas lentas.
phpunit-speedtrap está disponible bajo la licencia MIT.