O executor de testes em linha-de-comando do PHPUnit pode ser invocado através do comando
phpunit
O código seguinte mostra como executar testes com o executor de testes em linha-de-comando do PHPUnit:
phpunit VetorTest
PHPUnit 4.2.0 by Sebastian Bergmann.
..
Time: 0 seconds
OK (2 tests, 2 assertions)
Para cada teste executado, a ferramenta de linha-de-comando do PHPUnit imprime um caractere para indicar progresso:
.
Impresso quando um teste é bem sucedido.
F
Impresso quando uma asserção falha enquanto o método de teste executa.
E
Impresso quando um erro ocorre enquanto o método de teste executa.
S
Impresso quando o teste é pulado (veja Capítulo 7).
I
Impresso quando o teste é marcado como incompleto ou ainda não implementado (veja Capítulo 7).
O PHPUnit distingue entre falhas e
erros. Uma falha é uma asserção violada do PHPUnit assim como uma chamada falha ao assertEquals()
.
Um erro é uma exceção inesperada ou um erro do PHP. Às vezes essa distinção se mostra útil já que erros tendem a ser mais fáceis de consertar do que falhas. Se você tiver uma grande lista de problemas, é melhor enfrentar os erros primeiro e ver se quaisquer falhas continuam depois de todos consertados.
Vamos dar uma olhada nas comutadores do executor de testes em linha-de-comando, no código seguinte:
phpunit --help
PHPUnit 4.2.0 by Sebastian Bergmann.
Usage: phpunit [switches] UnitTest [UnitTest.php]
phpunit [switches] <directory>
--log-junit <file> Log test execution in JUnit XML format to file.
--log-tap <file> Log test execution in TAP format to file.
--log-json <file> Log test execution in JSON format.
--coverage-clover <file> Generate code coverage report in Clover XML format.
--coverage-html <dir> Generate code coverage report in HTML format.
--coverage-php <file> Serialize PHP_CodeCoverage object to file.
--coverage-text=<file> Generate code coverage report in text format.
Default to writing to the standard output.
--testdox-html <file> Write agile documentation in HTML format to file.
--testdox-text <file> Write agile documentation in Text format to file.
--filter <pattern> Filter which tests to run.
--group ... Only runs tests from the specified group(s).
--exclude-group ... Exclude tests from the specified group(s).
--list-groups List available test groups.
--loader <loader> TestSuiteLoader implementation to use.
--printer <printer> TestSuiteListener implementation to use.
--repeat <times> Runs the test(s) repeatedly.
--tap Report test execution progress in TAP format.
--testdox Report test execution progress in TestDox format.
--colors Use colors in output.
--stderr Write to STDERR instead of STDOUT.
--stop-on-error Stop execution upon first error.
--stop-on-failure Stop execution upon first error or failure.
--stop-on-skipped Stop execution upon first skipped test.
--stop-on-incomplete Stop execution upon first incomplete test.
--strict Run tests in strict mode.
-v|--verbose Output more verbose information.
--debug Display debbuging information during test execution.
--process-isolation Run each test in a separate PHP process.
--no-globals-backup Do not backup and restore $GLOBALS for each test.
--static-backup Backup and restore static attributes for each test.
--bootstrap <file> A "bootstrap" PHP file that is run before the tests.
-c|--configuration <file> Read configuration from XML file.
--no-configuration Ignore default configuration file (phpunit.xml).
--include-path <path(s)> Prepend PHP's include_path with given path(s).
-d key[=value] Sets a php.ini value.
-h|--help Prints this usage information.
--version Prints the version and exits.
phpunit UnitTest
Executa os testes que são fornecidos pela classe
UnitTest
. Espera-se que essa classe seja declarada no arquivo-fonte UnitTest.php
.
UnitTest
deve ser ou uma classe que herda de PHPUnit_Framework_TestCase
ou uma classe que fornece um método public static suite()
que retorna um objeto PHPUnit_Framework_Test
, por exemplo uma instância da classe
PHPUnit_Framework_TestSuite
.
phpunit UnitTest UnitTest.php
Executa os testes fornecidos pela classe
UnitTest
. Espera-se que esta classe seja declarada no arquivo-fonte especificado.
--log-junit
Gera um arquivo de registro no formato Junit XML para a execução dos testes. Veja Capítulo 14 for more details.
--log-tap
Gera um arquivo de registro usando o formato Test Anything Protocol (TAP)para a execução dos testes. Veja Capítulo 14 para mais detalhes.
--log-json
Gera um arquivo de registro usando o formato JSON. Veja Capítulo 14 para mais detalhes.
--coverage-html
Gera um relatório de cobertura de código no formato HTML. Veja Capítulo 10 para mais detalhes.
Por favor note que esta funcionalidade só está disponível quando as extensões tokenizer e Xdebug estão instaladas.
--coverage-clover
Gera um arquivo de registro no formato XML com a informação sobre a cobertura de código da execução dos testes. Veja Capítulo 14 para mais detalhes.
Por favor note que essa funcionalidade só está disponível quando as extensões tokenizer e Xdebug estão instaladas.
--coverage-php
Gera um objeto serializado PHP_CodeCoverage com a informação da cobertura de código.
Por favor note que essa funcionalidade só está disponível quando as extensões tokenizer e Xdebug estão instaladas.
--coverage-text
Gera um arquivo de registro ou saída em linha-de-comando em um formato humanamente legível com a informação de cobertura de código da execução dos testes. Veja Capítulo 14 para mais detalhes.
Por favor note que essa funcionalidade só está disponível quando as extensões tokenizer e Xdebug estão instaladas.
--testdox-html
e --testdox-text
Gera documentação ágil em formato HTML ou texto plano para os testes que são executados. Veja Capítulo 11 para mais detalhes.
--filter
Apenas executa os testes cujos nomes combinam com o padrão fornecido. O padrão pode tanto ser o nome de um único teste quanto uma expressão regular que combina múltiplos nomes de testes.
--group
Apenas executa os testes do(s) grupo(s) especificado(s). Um teste pode ser marcado como pertencente a um grupo usando a anotação @group
.
A anotação @author
é um apelido para
@group
, permitindo filtrar os testes com base em seus autores.
--exclude-group
Exclui testes do(s) grupo(s) especificado(s). Um teste pode ser marcado como pertencente a um grupo usando a anotação @group
.
--list-groups
Lista os grupos disponíveis.
--loader
Especifica a implementação PHPUnit_Runner_TestSuiteLoader
a ser usada.
A suíte de carregadores de teste padrão irá procurar pelo arquivo-fonte no diretório de trabalho atual e em cada diretório que está especificado na configuração de diretiva include_path
do PHP.
Seguindo as Convenções de Nomenclatura do PEAR, um nome de classe como
Project_Package_Class
é mapeado para o nome de arquivo-fonte Project/Package/Class.php
.
--printer
Especifica o impressor de resultados a ser usado. A classe impressora deve estender
PHPUnit_Util_Printer
e implementa a interface
PHPUnit_Framework_TestListener
.
--repeat
Executa repetidamente o(s) teste(s) um determinado número de vezes.
--tap
Relata o progresso do teste usando o Test Anything Protocol (TAP). Veja Capítulo 14 para mais detalhes.
--testdox
Relata o progresso do teste como uma documentação ágil. Veja Capítulo 11 para mais detalhes.
--colors
Usa cores na saída.
--stderr
Opcionalmente imprime para STDERR
em vez de
STDOUT
.
--stop-on-error
Para a execução no primeiro erro.
--stop-on-failure
Para a execução no primeiro erro ou falha.
--stop-on-skipped
Para a execução no primeiro teste pulado.
--stop-on-incomplete
Para a execução no primeiro teste incompleto.
--strict
Executa os testes em modo estrito.
--verbose
Saída mais verbosa de informações, por exemplo os nomes dos testes que ficaram incompletos ou foram pulados.
--process-isolation
Executa cada teste em um processo PHP separado.
--no-globals-backup
Não faz backup e restaura $GLOBALS. Veja “Estado Global” para mais detalhes.
--static-backup
Faz backup e restaura atributos estáticos das classes definidas pelo usuário. Veja “Estado Global” para mais detalhes.
--bootstrap
Um arquivo PHP "bootstrap" que é executado antes dos testes.
--configuration
, -c
Lê a configuração de um arquivo XML. Veja Apêndice B para mais detalhes.
Se phpunit.xml
ou
phpunit.xml.dist
(nessa ordem) existirem no diretório de trabalho atual e --configuration
não for usado, a configuração será lida automaticamente desse arquivo.
--no-configuration
Ignora phpunit.xml
e
phpunit.xml.dist
do diretório de trabalho atual.
--include-path
Precede o include_path
do PHP com o(s) caminho(s) fornecido(s).
-d
Define o valor da opção de configuração do PHP fornecida.
--debug
Informação da saída de depuração como o nome de um teste quando a execução inicia.