Capítulo 3. O executor de testes em linha-de-comando

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.

Comutadores de linha-de-comando

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.