Relatório de cobertura de testes (Code Coverage) com o PHPUnit \| TreinaWeb               Promoção no ar   Matricule-se agora e garanta **54% de desconto**  

  Termina em   Tempo restante da oferta: 14 Horas 

 14 Min 

 19 Seg 

   Tempo restante da oferta: 14 14 19 

  [Assinar →](https://www.treinaweb.com.br/checkout/pagamento/plano/anual?cupom=TW-SCLIENTE26) 

   [                ](https://www.treinaweb.com.br)  Explorar  

 [ Quanto custa? ](#assinatura) [ FAQ ](https://www.treinaweb.com.br#faq) [Matricule-se](#assinatura) [ Entrar ](https://www.treinaweb.com.br/login) 

     [ Início ](https://www.treinaweb.com.br) [ Artigos ](https://www.treinaweb.com.br/blog) Relatório de cobertura de testes (Code Coverage) com o PHPUnit  [ PHP ](https://www.treinaweb.com.br/blog/categoria/php) 

# Relatório de cobertura de testes (Code Coverage) com o PHPUnit

 O PHPUnit é um framework para a criação de testes unitários. Nesse artigo vamos falar sobre a geração de relatórios de cobertura de testes (Code Coverage).

 [ Elton Fonseca ](https://www.treinaweb.com.br/blog/autor/elton-fonseca) 10 anos atrás

  ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2021/05/relat-rio.jpg)  

O PHPUnit é um framework para a criação de testes unitários. Ele possui uma série de recursos que ajudam o desenvolvedor a criar uma suíte de teste eficiente. Hoje vamos falar sobre **Code Coverage**.

[  ![Laravel -  Service Container, Service Provider e Facades](https://d2knvm16wkt3ia.cloudfront.net/assets/svg-icon/laravel.svg)   Curso Laravel - Service Container, Service Provider e Facades Conhecer o curso ](https://www.treinaweb.com.br/curso/laravel-service-container-service-provider-e-facades)

## Instalação

O `php-code-coverage` é um módulo nativo do PHPUnit. Se você verificar no arquivo `composer.json` do PHPUnit ele é uma dependência:

[https://github.com/sebastianbergmann/phpunit/blob/5.7/composer.json#L26](https://github.com/sebastianbergmann/phpunit/blob/5.7/composer.json#L26 "https://github.com/sebastianbergmann/phpunit/blob/5.7/composer.json#L26")

```json
"phpunit/php-code-coverage": "^4.0.3",

```

Além do pacote acima (que já vem instalado por padrão), é necessário apenas ativar o XDebug, caso ele já não esteja ativo no seu [PHP](https://www.treinaweb.com.br/blog/o-que-e-php/ "PHP"). É possível até utilizar o [phpdbg como alternativa](http://eltonminetto.net/post/2016-08-30-gerando-phpunit-code-coverage-with-phpdbg/), caso você tenha uma grande quantidade de testes e o desempenho do XDebug deixe a desejar.

## Gerar o relatório de cobertura

Para gerar o relatório de cobertura de testes precisamos usar o binário do *PHPUnit*. O comando é bem simples, veja a sintaxe:

```
phpunit --whitelist diretório-arquivos-projeto --tipo-de-saída local-saída 

```

É possível gerar diferentes tipos de saída:

```
--coverage-clover  Gera relatório no formato Clover (https://www.atlassian.com/software/clover).
--coverage-crap4j  Gera relatório no formato Crap4J (http://www.crap4j.org/).
--coverage-html     Gera relatório visual no formato HTML
--coverage-php     Exporta PHP_CodeCoverage objetos para arquivo.
--coverage-text=   Gera o relatório no formato texto simples.
--coverage-xml      Gera o relatório no padrão XML do próprio PHPUnit.

```

Veja um exemplo real do comando acima:

```
vendor/bin/phpunit --whitelist src/ --coverage-html cover/

```

## Abrindo o relatório

Se executar o comando com a opção para gerar o relatório em HTML, dentro do diretório gerado terá uma série de arquivos `.html`, o principal é o `index.html`. Ao abri-lo uma listagem é exibida com o nome dos arquivos do projeto:

![Tela principal cobertura de testes](https://d2m498l008ebpa.cloudfront.net/2016/12/phpunit-cobertura-codigo-code-coverage.png)

Nessa tabela padrão são exibidas 3 métricas para ajudar a entender o nível de cobertura dos testes:

- **Lines**: Quantidade de linhas executáveis em cada arquivo e quantas linhas foram testadas.
- **Functions e Methods**: Quantidade de funções e métodos no arquivo e quantos foram testados. Só é considerado coberto um método que possui teste para todas as linhas executáveis.
- **Classes and Traits**: Quantidade de classes e traits do arquivo, e quantas foram testadas. Só é considerada testada uma classe ou trait se todos os métodos foram cobertos.

Ao clicar sobre um arquivo é possível ver todos os detalhes sobre ele, inclusive a cobertura linha-a-linha:

![Tela detalhes do arquivo, cobertura de testes](https://d2m498l008ebpa.cloudfront.net/2016/12/phpunit-cobertura-codigo-code-coverage-detalhes.png)

[  ![Desenvolvedor PHP Sênior](https://d2knvm16wkt3ia.cloudfront.net/assets/svg-icon/php.svg)   Formação Desenvolvedor PHP Sênior Conhecer a formação ](https://www.treinaweb.com.br/formacao/desenvolvedor-php-senior)

## Ignorando partes

Por motivos diversos pode ser necessário ignorar desde partes isoladas do código-fonte até métodos e classes inteiras, para isso basta usar anotações especificas, por exemplo:

Ignorando uma classe completa:

```php
/**
 * @codeCoverageIgnore
 */
class Foo
{
    public function bar()
    {
    }
}

```

Ignorando um método:

```php
class Bar
{
    /**
     * @codeCoverageIgnore
     */
    public function foo()
    {
    }
}

```

Ignorando um trecho de código:

```php
if (FALSE) {
    // @codeCoverageIgnoreStart
    print '*';
    // @codeCoverageIgnoreEnd
}

```

## Conclusão

O relatório de cobertura de testes é uma grande ferramenta, principalmente para quem está começando com testes, mas ele não deve ser levado de forma radical na busca de 100% de cobertura. Outro detalhe importante é que esse relatório pode levar a uma falsa confiança de que todos os casos estão cobertos (o que normalmente não é verdade), por isso não se deve confiar cegamente nele.

- [ #PHP ](https://www.treinaweb.com.br/blog/tag/php)
- [ #Testes unitários ](https://www.treinaweb.com.br/blog/tag/testes-unitarios)

Autor

 ![Elton Fonseca](//secure.gravatar.com/avatar/2cee05645357ced0841ce76ba5569c72?d=mm)

## Elton Fonseca

 Professor e desenvolvedor. Formado em análise e desenvolvimento de sistema, pós graduado em engenharia e arquitetura de software. É autor de cursos em diversos temas, como, desenvolvimento back-end, cloud computing e CMSs. Nas horas vagas adora estudar sobre o mercado financeiro, cozinhar e brincar com pequeno Daniel. [@eltonfonsecadev](https://twitter.com/eltonfonsecadev) 

 [Todos os artigos](https://www.treinaweb.com.br/blog/autor/elton-fonseca)  

## Continue estudando

 Transforme leitura em prática com os cursos e formações da TreinaWeb.

 [Ver cursos](https://www.treinaweb.com.br/cursos)   

  Continue lendo

## Artigos relacionados

- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2017/10/06103451/cobertura-codigos-testes-automatizados-400x280.jpg)  [ C# ](https://www.treinaweb.com.br/blog/categoria/csharp) 

     9 anos atrás

    ##  [ Analisando a cobertura de testes em aplicações .NET com o OpenCover ](https://www.treinaweb.com.br/blog/analisando-cobertura-de-testes-em-aplicacoes-net-com-o-opencover) 

     Conheça o OpenCover, ferramenta open-source para análise de cobertura de testes.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2021/05/background-post-400x280.jpg)  [ Algoritmos ](https://www.treinaweb.com.br/blog/categoria/algoritmos) 

     10 anos atrás

    ##  [ Complexidade ciclomática, análise estática e refatoração ](https://www.treinaweb.com.br/blog/complexidade-ciclomatica-analise-estatica-e-refatoracao) 

     Veremos nesse artigo como se dá a mensuração da complexidade ciclomática; como os analisadores estáticos podem nos auxiliar e a importância da refatoração.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2020/11/CICLO-TESTE-400x280.png)  [ Testes e Projetos ](https://www.treinaweb.com.br/blog/categoria/testes-e-projetos) 

     6 anos atrás

    ##  [ Quais são as etapas do Ciclo de Vida de Testes de Software? ](https://www.treinaweb.com.br/blog/quais-sao-as-etapas-do-ciclo-de-vida-de-testes-de-software) 

     Confira neste artigo quais são as etapas do Ciclo de Vida de Testes de Software e entenda sua importância.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2021/05/depura--o-400x280.png)  [ PHP ](https://www.treinaweb.com.br/blog/categoria/php) 

     10 anos atrás

    ##  [ Depuração de código PHP ](https://www.treinaweb.com.br/blog/depuracao-de-codigo-php) 

     Como fazer a depuração de código PHP? Essa é uma dúvida recorrente do pessoal que está vindo de outras linguagens ou que está começando a escrever projetos um pouco mais complexos.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2022/08/DESENOLVEDOR-MOBILE-INVESTIR-CARREIRA-400x280.png)  [ Desenvolvimento Mobile ](https://www.treinaweb.com.br/blog/categoria/desenvolvimento-mobile) 

     4 anos atrás

    ##  [ Desenvolvedor mobile: por que investir nessa carreira? ](https://www.treinaweb.com.br/blog/desenvolvedor-mobile-por-que-investir-nessa-carreira) 

     Carreira mobile tem muitas oportunidades, por isso vamos ver o que você precisa saber para entrar ou migrar para essa área tão promissora.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2021/02/MUDANCA-CARREIRA-TI-1-400x280.png)  [ Carreira ](https://www.treinaweb.com.br/blog/categoria/carreira) 

     6 anos atrás

    ##  [ Por que investir em uma carreira de tecnologia? ](https://www.treinaweb.com.br/blog/por-que-investir-em-uma-carreira-de-tecnologia) 

     Para você que está pensando investir em uma carreira de tecnologia, porém ainda tem algumas dúvidas, vale a pena dar uma conferida neste artigo!

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2020/09/importancia-dos-testes-de-software-na-qualidade-do-sistema-400x280.png)  [ Testes e Projetos ](https://www.treinaweb.com.br/blog/categoria/testes-e-projetos) 

     6 anos atrás

    ##  [ Importância dos testes de software na qualidade do sistema ](https://www.treinaweb.com.br/blog/importancia-dos-testes-de-software-na-qualidade-do-sistema) 

     Os testes de software são uma atividade essencial para garantir a qualidade do sistema ou aplicação e não podem ser vistos como algo opcional.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2020/09/soft-skills-o-que-as-empresas-buscam-400x280.png)  [ Carreira ](https://www.treinaweb.com.br/blog/categoria/carreira) 

     6 anos atrás

    ##  [ Soft Skills - O que as empresas buscam? ](https://www.treinaweb.com.br/blog/soft-skills-o-que-as-empresas-buscam) 

     Confira neste artigo as 5 soft skills mais valorizadas no mercado atualmente, segundo o LinkedIn.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2021/05/complexity-code-copy-400x280.jpg)  [ PHP ](https://www.treinaweb.com.br/blog/categoria/php) 

     10 anos atrás

    ##  [ Ferramenta para avaliar a complexidade de código escrito em PHP ](https://www.treinaweb.com.br/blog/ferramenta-para-avaliar-a-complexidade-de-codigo-escrito-em-php) 

     Conheça um pouco mais sobre a phploc, ferramenta para avaliar a complexidade de código escrito em PHP.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2020/11/PROFISSIONAL-TESTES-400x280.png)  [ Testes e Projetos ](https://www.treinaweb.com.br/blog/categoria/testes-e-projetos) 

     6 anos atrás

    ##  [ Como é o dia a dia de um profissional de teste? ](https://www.treinaweb.com.br/blog/como-e-o-dia-a-dia-de-um-profissional-de-teste) 

     O conhecimento técnico e a visão de negócio deste profissional também lhe permite colaborar no desenvolvimento do software. Saiba mais neste artigo!

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2019/12/14174401/capa-BI-400x280.png)  [ Tecnologia ](https://www.treinaweb.com.br/blog/categoria/tecnologia) 

     7 anos atrás

    ##  [ Business Intelligence (BI): o que é e para que serve? ](https://www.treinaweb.com.br/blog/business-intelligence-bi-o-que-e-e-para-que-serve) 

     Confira neste artigo como o BI pode trazer benefícios para as empresas.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2017/10/01114649/ms-project-400x280.jpg)  [ Testes e Projetos ](https://www.treinaweb.com.br/blog/categoria/testes-e-projetos) 

     9 anos atrás

    ##  [ Microsoft Project: o que mais ele tem a oferecer? ](https://www.treinaweb.com.br/blog/microsoft-project-o-que-mais-ele-tem-a-oferecer) 

     Veja nesse artigo algumas funcionalidades do MS Project que talvez você não conheça.

     Ler artigo

## Um ano de acesso total para você viver de programação.

 Todos os cursos e formações da TreinaWeb numa única assinatura, com professores que atuam no mercado, suporte direto e certificados. Do primeiro `console.log` ao mercado de trabalho.

- **1 ano** de acesso a **todos os cursos**
- Cursos novos **toda semana**
- Suporte **direto com professores**
- Plano de carreira **personalizado**
- **Certificados digitais** inclusos
- **Aplicativos** para Android e iOS, com **acesso offline**

    **Garantia incondicional de satisfação** 

 Teste por 7 dias e, se não fizer sentido para você, devolvemos seu dinheiro.

### Acesso completo a todos os cursos e dezenas de Formações.

 12 meses 

  Economize R$ 840,00  54% OFF 

 de 12x R$ 129,00 por apenas

 12x  R$ 59,00

 sem juros no cartão de crédito ou R$ 599,00 à vista

  Oferta termina em  **14h 14min 19s**

- Acesso imediato e ilimitado durante 1 ano.
- Plano de carreira personalizado.
- Suporte direto com professores.
- E muito mais!

 [Matricule-se agora](https://www.treinaweb.com.br/checkout/pagamento/plano/anual?cupom=TW-SCLIENTE26)

     [                ](https://www.treinaweb.com.br)

 Escola online de programação, tecnologia e IA.

- [  ](https://www.facebook.com/TreinaWeb/)
- [  ](https://www.instagram.com/treinaweb/)
- [  ](https://www.youtube.com/user/TreinaWeb)
- [  ](https://twitter.com/treinaweb)
- [  ](https://www.linkedin.com/company/treinaweb)
- [  ](https://github.com/treinaweb)

## Inscreva-se em nossa newsletter

Receba lançamentos, promoções e novidades.

   Seu nome     Seu WhatsApp     Seu melhor e-mail   Inscrever-se 

## Cursos

- [ Base para Devs ](https://www.treinaweb.com.br/categoria/base-para-devs)
- [ Front-end ](https://www.treinaweb.com.br/categoria/desenvolvimento-front-end)
- [ Back-end ](https://www.treinaweb.com.br/categoria/desenvolvimento-back-end)
- [ Mobile ](https://www.treinaweb.com.br/categoria/desenvolvimento-mobile)
- [ Bancos de Dados ](https://www.treinaweb.com.br/categoria/bancos-de-dados)
- [ Cloud ](https://www.treinaweb.com.br/categoria/cloud-computing)
- [ IA ](https://www.treinaweb.com.br/categoria/ia)
- [ E mais ](https://www.treinaweb.com.br/categoria/e-mais)
- [ Ver todos os cursos ](https://www.treinaweb.com.br/cursos)

## Conteúdo

- [ Formações ](https://www.treinaweb.com.br/formacoes)
- [ Projetos práticos ](https://www.treinaweb.com.br/projetos-praticos)
- [ Direto ao ponto ](https://www.treinaweb.com.br/direto-ao-ponto)
- [ Planos ](https://www.treinaweb.com.br#assinatura)
- [ Depoimentos ](https://www.treinaweb.com.br#depoimentos)
- [ Comunidade ](https://www.treinaweb.com.br#comunidade)
- [ Corpo docente ](https://www.treinaweb.com.br#docente)

## A empresa

- [ Sobre a TreinaWeb ](https://www.treinaweb.com.br#sobre)
- [ Perguntas frequentes ](https://www.treinaweb.com.br#faq)
- [ Vantagens de estudar na TreinaWeb ](https://www.treinaweb.com.br/vantagens-de-estudar-na-treinaweb)
- [ Cursos para empresas ](https://www.treinaweb.com.br/empresas)
- [ Sugira um novo curso ](https://www.treinaweb.com.br/sugerir-curso)
- [ Trabalhe conosco ](https://www.treinaweb.com.br/trabalhe-conosco)
- [ Artigos ](https://www.treinaweb.com.br/blog)
- [ Desenvolvedores e agentes ](https://www.treinaweb.com.br/developers)
- [ Contato ](https://www.treinaweb.com.br/contato)
- [ Política de privacidade ](https://www.treinaweb.com.br/politica-de-privacidade)
- [ Termos de uso ](https://www.treinaweb.com.br/termos-de-uso)

## Baixe nosso aplicativo

 [   Disponível na **App Store**  ](https://apps.apple.com/us/app/treinaweb/id1322729447) [   Disponível no **Google Play**  ](https://play.google.com/store/apps/details?id=br.com.treinaweb.mobile) 

  Av. Paulista, 1765, Conj 71 e 72 · Bela Vista · São Paulo · SP · 01311-200   © 2004 – 2026 TreinaWeb Tecnologia LTDA · CNPJ 06.156.637/0001-58
