Estou lutando para executar um único método de teste nomeado testSaveAndDrop
no arquivo escalation/EscalationGroupTest.php
com phpunit
. Eu tentei as seguintes combinações:
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
Em cada caso, todos os métodos de teste no arquivo escalation/EscalationGroupTest.php
são executados. Como selecionar apenas UM método?
O nome da classe é EscalationGroupTest
e a versão phpunit
é 3.2.8.
Respostas:
O comando a seguir executa o teste em um único método:
Para versões mais recentes do phpunit, é apenas:
fonte
phpunit --filter methodName path/to/testing/file
nãoClassName
.Prefiro marcar o teste na anotação como
Em seguida, executando-o com
Não há necessidade de especificar o caminho completo na linha de comando, mas você deve se lembrar de removê-lo antes de confirmar, para não confundir o código.
Você também pode especificar vários grupos para um único teste
fonte
@group failing, Integration
<phpunit>
: <groups><include> <group> falhando </ group > </include> </groups>@depends
de outro, então você precisa identificar todos os testes interconectados e, assim, usar a@group
anotação.Aqui está a resposta mais genérica:
Se você tiver certeza de que o nome do método é exclusivo, você pode filtrar apenas pelo nome do método (isso funciona para mim)
No entanto, é mais seguro especificar também o caminho / referência do arquivo
Exemplo:
Nota rápida: notei que, se eu tiver uma função chamada
testSave
e outra função chamadatestSaveAndDrop
using commandphpunit --filter testSave
, também será executadatestSaveAndDrop
e qualquer outra função que comece comtestSave*
, será estranho!fonte
/testSave$/
O comando a seguir executará exatamente o
testSaveAndDrop
teste.fonte
\b
vez de$
finalmente fez o truque:--filter '/::testSaveAndDrop\b/'
.'/::testSaveAndDrop\b/'
e'/::testSaveAndDrop$/'
funcionou para mim como estephpunit --filter ClassName::methodName$
ephpunit --filter ClassName::methodName\b
(em Linux)para executar o teste phpunit no laravel de várias maneiras ..
para teste de classe única:
para o método único de teste:
para executar testes de todas as classes no namespace:
para mais testes de execução, veja mais
fonte
Então, algo assim
Sem
=
e com'
https://phpunit.de/manual/3.7/en/textui.html
fonte
EscalationGroupTest
estão sendo processados.--filter
para antes do nome do arquivo e tudo deve funcionar corretamente.No tests executed!
no PHPUnit4.8.35
@Schleis Como exatamente você mudou o comando?Exemplo com nome do método personalizado.
Exemplo com palavra-chave de teste
fonte
Se você está no netbeans, pode clicar com o botão direito do mouse no método de teste e clicar em "Executar Método de Teste Focado".
fonte
Você pode tentar isso, eu sou capaz de executar casos de teste únicos
Por exemplo:
Se você deseja executar casos de teste únicos no Laravel 5.5, tente
Por exemplo:
fonte
A razão pela qual todos os seus testes estão sendo executados é que você tem o
--filter
sinalizador após o nome do arquivo. O PHPUnit não está lendo as opções e está executando todos os casos de teste.Na tela de ajuda:
Portanto, mova o
--filter
argumento antes do arquivo de teste que você deseja, conforme mencionado nas respostas @Alex e @Ferid Mövsümov. E você só deve ter o teste que deseja executar.fonte
--filter
opção estava atrás do nome do arquivo. As outras duas respostas tinham a resposta correta, mas não apontaram por que o filtro estava sendo aplicado.Se você estiver usando um arquivo de configuração XML, poderá adicionar o seguinte dentro da
phpunit
tag:Consulte https://phpunit.de/manual/current/en/appendixes.configuration.html
fonte
Estou atrasado para a festa. Mas como pessoal eu odeio escrever a linha inteira.
Em vez disso, eu uso os seguintes atalhos no arquivo .bash_profile para garantir a origem do arquivo .bash_profile após adicionar qualquer novo alias, caso contrário ele não funcionará.
Uso:
Se você usa o Visual Studio Code, pode usar o seguinte pacote para facilitar seus testes.
Você pode definir a combinação de teclas nas configurações. Eu uso a ligação Command + T no meu MAC.
Agora, depois de colocar o cursor em qualquer função e usar a ligação de teclas, ele executará automaticamente esse único teste.
Se você precisar executar a classe inteira , coloque o cursor em cima da classe e use a associação de teclas.
Se você tiver outras coisas, sempre use o Terminal.
Feliz codificação!
fonte
Você deve usar --filter para executar um único método de teste
php phpunit --filter "/::testMethod( .*)?$/" ClassTest ClassTest.php
O filtro acima executará o testMethod sozinho.
fonte