Skip to content

ari-mluz/tutorial-coverage-pest-php

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

12 Commits
 
 
 
 

Repository files navigation

Guia de cobertura de testes com o framework PEST

Neste guia abordaremos a utilização da ferramenta de cobertura de testes, incluída no framework de testes PEST, ferramenta open-source baseada no PHPUnit que possui uma boa documentação e uma sintaxe amigável.

Guia feito por Ariadne Milena L. Silva.

Pré-requisitos

Instalação do framework PEST

Na pasta raiz do projeto coverage_pest, rode o seguinte comando no terminal:

composer require pestphp/pest --dev --with-all-dependencies

Após a instalação, rode o seguinte comando para inicializar os arquivos:

./vendor/bin/pest --init

Após os comandos acima, você pode rodar o seguinte comando para verificar se o framework está funcionando:

./vendor/bin/pest 

Se tudo estiver certo, você deve ver a seguinte saída:

output-teste

Escrevendo testes

Recomendo a leitura da documentação do PEST para você aprender sobre a escrita dos testes. O link direto para a seção de escrita de testes pode ser acessado através deste link.

Para este guia, a pasta coverage_pest já inclui o código de produção (o código no qual os testes serão aplicados) e os testes.

De forma geral, para verificar a cobertura de testes, é necessário:

  1. Escrever o código de produção;
  2. Escrever os testes utilizando a sintaxe do PEST ou PHPUnit.

Executando o comando de cobertura de testes

Observação:

Caso utilize o Xdebug, defina o modo de operação para coverage, para fazer isso basta alterar a variável através deste comando ao rodar o teste:

XDEBUG_MODE=coverage ./vendor/bin/pest --coverage

Caso não funcione, você pode alterar o valor no arquivo php.ini, localizado na pasta raiz do PHP. Neste caso, adicione a seguinte linha no bloco onde estão as outras configurações do Xdebug:

xdebug.mode=coverage 

A máquina utilizada neste guia faz uso do Xdebug.

Comando padrão

Para executar a verificação da cobertura, o comando básico é:

./vendor/bin/pest --coverage

Adicionando um valor mínimo de cobertura

É possível definir um valor mínimo de cobertura para o teste ser considerado aprovado (PASS). Para isto, deve-se adicionar o parâmetro --min, sendo o número a porcentagem de cobertura mínima a ser atingida.

Exemplo:

./vendor/bin/pest --coverage --min=90

Neste exemplo, o teste precisa ter ao menos 90% de cobertura, se não aparecerá como fracassado (FAIL).

Adicionando ou filtrando pastas

Por padrão, o PEST detecta automaticamente pastas com nome app e src. Caso a pasta onde o seu código de produção está possua outro nome, é possível adicioná-la inserindo uma nova linha com a tag <directory> no arquivo phpunit.xml, localizado na raiz do projeto.

<coverage processUncoveredFiles="true">
	<include>
		<directory suffix=".php">./app</directory>
		<directory suffix=".php">./src</directory>
		<directory suffix=".php">./nome_da_sua_pasta</directory>
	</include>
</coverage>	

Desta forma, também é possível filtrar que pastas estão sendo utilizadas.

Exportando os resultados

Para exportar os resultados, você pode usar as funções do PHPUnit --coverage-html, para exportar o resultado em HTML ou --coverage-xml, para exportar em XML.

Utilização:

Exportando em HTML

./vendor/bin/pest --coverage --coverage-html nome-da-pasta

Exportando em XML

./vendor/bin/pest --coverage --coverage-xml nome-da-pasta

Analisando os resultados

Ao rodar o comando ./vendor/bin/pest --coverage, é exibido o seguinte relatório:

output-cobertura

detalhe-cobertura

sistema é o nome do arquivo verificado e os números 36, 51, e 64 são referentes as linhas que não estão sendo cobertas pelo teste atualmente, resultando numa cobertura de 81,3%.

Aumentando a cobertura do teste

4

5

6

Analisando as linhas mencionadas no relatório, percebemos que falta criar um teste para cada situação em que as funções vão retornar false. Para isso, descomentamos as linhas no arquivo sistemaTest.php. Em outro cenário, você precisará os testes manualmente.

Note que, conforme você cria (ou no caso, descomenta) os testes que faltam e executa o comando, a porcentagem de cobertura vai aumentando de acordo, bem como a quantidade de linhas a cobrir vão sendo reduzidas.

7

8

Ao cobrir todas as linhas do código, você terá um relatório de 100% de cobertura.

9

Vídeo

Para este guia, foi criado um vídeo demonstrando na prática cada passo mencionado acima.

Link: https://youtu.be/mfyvHjIDqu0

Finalizando

Espero que este guia tenha sido útil para mostrar a utilização da ferramenta de cobertura do PEST, framework que possui muitas outras funcionalidades além desta mencionada no guia. Vale dar uma aprofundada em sua documentação para conferir o que a ferramenta pode proporcionar.

About

Guia de cobertura de testes com o framework PEST

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Languages