PHPUnit para PHP: guia completo com exemplos

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

O que é PHPUnit e para que serve?

\n\n

PHPUnit é um framework para testes unitários (unit testing) na linguagem PHP. Ele faz parte da família xUnit e fornece aos desenvolvedores ferramentas para automatizar a verificação do funcionamento de componentes individuais do programa (classes, métodos, funções).

\n\n

Para que serve o PHPUnit?

\n
    \n
  • Detecção precoce de erros: Os testes são executados após cada alteração no código, permitindo identificar regressões instantaneamente.
  • \n
  • Documentação do código: Testes bem escritos servem como documentação viva, mostrando como um determinado método deve funcionar.
  • \n
  • Refatoração sem medo: Você pode reescrever o código com confiança, sabendo que os testes não permitirão quebrar a funcionalidade existente.
  • \n
  • Suporte a TDD (Test-Driven Development): Desenvolvimento orientado a testes — metodologia onde primeiro se escreve o teste e depois o código mínimo para fazê-lo passar.
  • \n
  • Integração com CI/CD: PHPUnit se integra facilmente em pipelines de integração contínua (GitHub Actions, GitLab CI, Jenkins).
  • \n
\n\n

PHPUnit suporta mocks (objetos simulados), fixtures (conjuntos de dados para testes), cobertura de código (code coverage) e muitas outras funções avançadas.

\n\n

Instalação do PHPUnit

\n\n

O PHPUnit é instalado via Composer — o gerenciador de dependências para PHP. Se você ainda não tem o Composer, instale-o pelo site oficial getcomposer.org.

\n\n

Instalação global (recomendada para CLI)

\n
composer global require phpunit/phpunit
\n\n

Após isso, certifique-se de que o diretório de pacotes globais do Composer foi adicionado ao PATH. Verifique a instalação:

\n
phpunit --version
\n\n

Instalação local (dentro do projeto)

\n
composer require --dev phpunit/phpunit
\n\n

Após isso, o PHPUnit estará disponível através de vendor/bin/phpunit.

\n\n

Instalação de uma versão específica

\n
composer require --dev phpunit/phpunit:^10.0
\n\n

Importante: A versão do PHPUnit deve corresponder à versão do PHP no seu projeto. Por exemplo, PHPUnit 10 requer PHP 8.1 ou superior.

\n\n

Início rápido com exemplo de código

\n\n

Vamos criar uma classe simples Calculator.php e escrever testes para ela.

\n\n

Passo 1. Criando a classe para testar

\n
<?php\n// src/Calculator.php\n\nclass Calculator\n{\n    public function add(int $a, int $b): int\n    {\n        return $a + $b;\n    }\n\n    public function subtract(int $a, int $b): int\n    {\n        return $a - $b;\n    }\n\n    public function multiply(int $a, int $b): int\n    {\n        return $a * $b;\n    }\n\n    public function divide(int $a, int $b): float\n    {\n        if ($b === 0) {\n            throw new \\InvalidArgumentException("Division by zero");\n        }\n        return $a / $b;\n    }\n}
\n\n

Passo 2. Criando a classe de teste

\n
<?php\n// tests/CalculatorTest.php\n\nuse PHPUnit\\Framework\\TestCase;\n\nclass CalculatorTest extends TestCase\n{\n    private Calculator $calculator;\n\n    protected function setUp(): void\n    {\n        $this->calculator = new Calculator();\n    }\n\n    public function testAdd(): void\n    {\n        $result = $this->calculator->add(2, 3);\n        $this->assertEquals(5, $result);\n    }\n\n    public function testSubtract(): void\n    {\n        $result = $this->calculator->subtract(10, 4);\n        $this->assertEquals(6, $result);\n    }\n\n    public function testMultiply(): void\n    {\n        $result = $this->calculator->multiply(3, 4);\n        $this->assertEquals(12, $result);\n    }\n\n    public function testDivide(): void\n    {\n        $result = $this->calculator->divide(10, 2);\n        $this->assertEquals(5.0, $result);\n    }\                    

Recommendations