Documentação Teste Unitário
Esse projeto é uma série de documentações de ferramentas de teste unitário em diversas linguagens.
Projeto já adicionado aos favoritos. Clique aqui para ver todos seus favoritos
Obrigado pela sua avaliação, deixe o seu feedback nos comentários :D
Introdução
O PHPUnit é um framework para realização de testes unitários em PHP baseada na arquitetura xUnit. É a forma mais difundida para realizar a prática de testes unitários pela comunidade PHP.
Após ler essa documentação confira também a documentação de PHPUnit, que cobre tópicos mais avançados sobre esse Framework. Documentação PHPUnit
Visão Geral
O PHPUnit foi criado por Sebastian Bergmann com o intuito de trazer ao PHP todos os recursos que já haviam no framework de teste unitário JUnit da linguagem Java, com os diferenciais para se adequar as peculiaridades da linguagem PHP. O PHPUnit está disponível para aplicações com o PHP a partir da versão 5.5.
Por exemplo, quando precisamos testar se um método de consulta está buscando o registro certo, o mais comum é por o resultado dentro de um var_dump para imprimir o resultado na tela para ver se o valor é o esperado.
$clienteDao = new ClienteDAO();
$cliente = $clienteDao->findById(10);
var_dump($cliente->nome);
//O valor impresso na tela deve ser "Edson Arantes do Nascimento"
Em um projeto maior esse tipo de teste tende a se tornar inviável e inseguro a medida que a complexidade do módulo e da unidade aumentam, é natural sentir falta de uma metodologia de testes, que permita medir a cobertura de teste do código, tornando fácil criar os cenários nos quais as falhas serão percebidas. Os testes unitários suprem essas e outras carências do processo de teste de código.
public function testFindById()
{
$clienteDao = new ClienteDAO();
$cliente = $clienteDao->findById(10);
$this->assertEquals("Edson Arantes do Nascimento", $cliente->nome)
}
O PHPUnit é instalado como uma dependência ao projeto e se adequa perfeitamente com a estrutura do mesmo. Possui uma Interface de Linha de Comando própria com opções de customização para a forma de executar os testes.
Instalação
O PHPUnit pode ser instalado pelo Composer, um gerenciador de dependências do PHP que permite a declaração das bibliotecas das quais o seu projeto depende e as instala de forma automatizada.
Para isso execute o seguinte comando no diretório raiz do seu projeto:
composer require --dev phpunit/phpunit
Nota: Caso esteja utilizando algum framework verifique se ele já possui o PHPUnit instalado como ferramenta de teste padrão, como é o caso do Laravel.
Configuração
Para utilizar o PHPUnit dentro do seu projeto é preciso criar na raiz do mesmo um arquivo chamado phpunit.xml e uma pasta chamada tests. A estrutura do projeto deve se parecer com ilustrado na Figura 1:
No arquivo phpunit.xml adicione as seguintes configurações:
<?xml version="1.0" encoding="UTF-8"?>
<phpunit bootstrap="vendor/autoload.php"
colors="true"
verbose="true"
stopOnFailure="false">
<testsuites>
<testsuite name="Primeiro exemplo">
<directory>tests</directory>
</testsuite>
</testsuites>
</phpunit>
Vejamos passo a passo uma explicação sobre esse código.
- Linha 3: instruímos o PHPUnit onde encontrar e carregar as suas classes a partir de um autoload e através
do atributo bootstrap.
phpunit bootstrap="vendor/autoload.php"
- Linha 4: instruímos o PHPUnit para que o terminal exiba cores referentes ao
sucesso ou fracasso do teste, algo que só pode ser percebido em um terminal com suporte a cores.
colors="true"
- Linha 5: instruímos o PHPUnit que desejamos visualizar mais informações
referentes aos testes executados.
verbose="true"
- Linha 6: instruímos o PHPUnit a não interromper os testes na primeira
falha.
stopOnFailure="false">
- Linha 7 até 11: Aqui configuramos as suítes de teste, as quais damos um nome com o atributo name do elemento testsuite. É aqui também que indicamos qual será a pasta que conterá as classes de teste, usando para isso o elemento directory.
<testsuites> <testsuite name="Primeiro exemplo"> <directory>tests</directory> </testsuite> </testsuites>