Estoy luchando para ejecutar un único método de prueba nombrado testSaveAndDrop
en el archivo escalation/EscalationGroupTest.php
con phpunit
. Probé las siguientes combinaciones:
phpunit EscalationGroupTest escalation/EscalationGroupTest.php --filter=escalation/EscalationGroupTest.php::testSaveAndDrop
phpunit EscalationGroupTest escalation/EscalationGroupTest.php --filter=EscalationGroupTest.php::testSaveAndDrop
phpunit EscalationGroupTest escalation/EscalationGroupTest.php --filter=EscalationGroupTest::testSaveAndDrop
phpunit EscalationGroupTest escalation/EscalationGroupTest.php --filter=testSaveAndDrop
En cada caso, se ejecutan todos los métodos de prueba en el archivo escalation/EscalationGroupTest.php
. ¿Cómo seleccionar solo UN método en su lugar?
El nombre de la clase es EscalationGroupTest
y la versión de phpunit
es 3.2.8.
Respuestas:
El siguiente comando ejecuta la prueba en un solo método:
Para las versiones más nuevas de phpunit, es solo:
fuente
phpunit --filter methodName path/to/testing/file
noClassName
.Prefiero marcar la prueba en anotaciones como
Luego ejecutándolo con
No es necesario especificar la ruta completa en la línea de comando, pero debe recordar haberlo eliminado antes de confirmar, para no saturar el código.
También puede especificar varios grupos para una sola prueba
fuente
@group failing, Integration
<phpunit>
: <groups><include> <group> failing </ group > </include> </groups>@depends
de otra, por lo que debe identificar todas las pruebas interconectadas y, por lo tanto, utilizar la@group
anotación.Aquí está la respuesta más genérica:
Si está seguro de que el nombre del método es único, solo puede filtrar por nombre del método (esto funciona para mí)
Sin embargo, también es más seguro especificar la ruta / referencia del archivo
Ejemplo:
Nota rápida: He notado que si tengo una función llamada
testSave
y otra función llamadatestSaveAndDrop
usando el comandophpunit --filter testSave
también se ejecutarátestSaveAndDrop
y cualquier otra función que comiencetestSave*
, ¡es extraño!fuente
/testSave$/
El siguiente comando ejecutará exactamente la
testSaveAndDrop
prueba.fuente
\b
en lugar de$
por fin hizo el truco:--filter '/::testSaveAndDrop\b/'
.'/::testSaveAndDrop\b/'
y'/::testSaveAndDrop$/'
trabajó para mí como estaphpunit --filter ClassName::methodName$
yphpunit --filter ClassName::methodName\b
(en Linux)para ejecutar la prueba phpunit en laravel de muchas maneras ..
para prueba de clase individual:
Para el método único de prueba:
para ejecutar pruebas de toda clase dentro del espacio de nombres:
para más pruebas de ejecución ver más
fuente
Entonces, algo como esto
Sin
=
y con'
https://phpunit.de/manual/3.7/en/textui.html
fuente
EscalationGroupTest
están siendo procesadas.--filter
a antes del nombre del archivo y las cosas deberían funcionar bien.No tests executed!
en PHPUnit4.8.35
@Schleis ¿Cómo exactamente cambiaste el comando?Ejemplo con nombre de método personalizado.
Ejemplo con palabra clave de prueba
fuente
Si está en netbeans, puede hacer clic derecho en el método de prueba y hacer clic en "Ejecutar método de prueba enfocado".
fuente
Puedes probar esto, puedo ejecutar casos de prueba individuales
P.ej:
Si desea ejecutar casos de prueba individuales en Laravel 5.5, intente
P.ej:
fuente
La razón por la que todas sus pruebas se están ejecutando es porque tiene el
--filter
indicador después del nombre del archivo. PHPUnit no lee las opciones en absoluto y, por lo tanto, ejecuta todos los casos de prueba.Desde la pantalla de ayuda:
Entonces mueva el
--filter
argumento antes del archivo de prueba que desee como se menciona en las respuestas de @Alex y @Ferid Mövsümov. Y solo debe tener la prueba que desea ejecutar.fuente
--filter
opción estaba después del nombre del archivo. Las otras dos respuestas tenían la respuesta correcta, pero no señalaban por qué se estaba aplicando el filtro.Si está utilizando un archivo de configuración XML, puede agregar lo siguiente dentro de la
phpunit
etiqueta:Ver https://phpunit.de/manual/current/en/appendixes.configuration.html
fuente
Sin embargo, llego tarde a la fiesta. Pero como personal odio escribir toda la línea.
En su lugar, utilizo los siguientes accesos directos en el archivo .bash_profile , asegúrese de obtener el archivo .bash_profile después de agregar cualquier alias nuevo, de lo contrario no funcionará.
Uso:
Si usa Visual Studio Code , puede usar el siguiente paquete para simplificar sus pruebas.
Luego puede establecer la combinación de teclas en la configuración. Uso Command + T vinculante en mi MAC.
Ahora, una vez que coloque el cursor en cualquier función y luego use la combinación de teclas, se ejecutará automáticamente esa única prueba.
Si necesita ejecutar toda la clase , coloque el cursor encima de la clase y luego use la combinación de teclas.
Si tiene alguna otra cosa, siempre modifique con la Terminal
¡Feliz codificación!
fuente
Debe usar --filter para ejecutar un único método de prueba
php phpunit --filter "/::testMethod( .*)?$/" ClassTest ClassTest.php
El filtro anterior ejecutará testMethod solo.
fuente