Git Product home page Git Product logo

tutorial-coverage-pest-php's Introduction

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.

tutorial-coverage-pest-php's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar

Forkers

danilomatheus

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.