Por que testar PHP não é assustador, mas sim útil?
\n\nImagine: você escreveu um script em PHP, ele funciona. Você fica feliz. Uma semana depois, precisa adicionar uma nova funcionalidade. Altera algumas linhas — e de repente tudo quebra. Familiar? Se sim, está na hora de conhecer os testes de PHP. Não é mágica, é apenas um conjunto de ferramentas que salva seu projeto do caos.
\n\nMuitos desenvolvedores iniciantes têm medo de testes. Parece algo complicado, chato e que toma tempo. Na verdade, testes unitários em PHP são como um seguro: você paga um pouco agora para não perder tudo depois. Neste artigo, vamos mostrar como começar a testar PHP do zero, quais ferramentas usar e como escrever seu primeiro teste sem enlouquecer.
\n\nO que são testes e por que você precisa deles?
\n\nTestes de código são o processo de verificar se seu programa faz exatamente o que você espera. Em vez de abrir o navegador manualmente toda vez e clicar em links, você escreve scripts especiais (testes) que fazem isso por você.
\n\nPrincipais benefícios:
\n- \n
- Confiança no código. Você sabe que, após alterações, nada vai quebrar. \n
- Economia de tempo. A verificação automática é mais rápida que a manual. \n
- Documentação. Os testes mostram como seu código deve funcionar. \n
- Refatoração sem medo. Pode reescrever o código tranquilamente se os testes passarem. \n
A ferramenta mais popular para testes em PHP é o PHPUnit. Ele é o padrão de facto no mundo PHP. É com ele que vamos trabalhar.
\n\nInstalação do PHPUnit: dois jeitos simples
\n\nAntes de escrever testes, você precisa instalar o PHPUnit. Existem dois caminhos principais.
\n\nMétodo 1: Composer (recomendado)
\n\nSe você já usa Composer (e deveria, é o gerenciador de dependências do PHP), é simples. Abra o terminal na raiz do seu projeto e execute:
\n\ncomposer require --dev phpunit/phpunit ^10\n\nA flag --dev indica que o PHPUnit será instalado apenas para desenvolvimento, sem ir para o servidor de produção.
Método 2: Arquivo PHAR
\n\nSe o Composer não é para você, baixe o PHPUnit como um único arquivo:
\n\nwget https://phar.phpunit.de/phpunit.phar\nchmod +x phpunit.phar\nsudo mv phpunit.phar /usr/local/bin/phpunit\n\nDepois disso, o comando phpunit --version deve mostrar a versão.
Primeiro teste: escrevendo e executando
\n\nAgora a parte mais legal. Vamos criar uma classe simples e escrever um teste para ela. Suponha que temos uma função que soma dois números.
\n\nPasso 1. Código para testar
\n\nCrie o arquivo src/Calculator.php:
<?php\n\nnamespace App;\n\nclass Calculator\n{\n public function add(float $a, float $b): float\n {\n return $a + $b;\n }\n}\n\nPasso 2. Teste para essa classe
\n\nO PHPUnit segue uma convenção: os testes ficam no diretório tests/, e o nome do arquivo de teste é igual ao nome da classe com o sufixo Test. Crie tests/CalculatorTest.php:
<?php\n\nnamespace Tests;\n\nuse App\\Calculator;\nuse PHPUnit\\Framework\\TestCase;\n\nclass CalculatorTest extends TestCase\n{\n public function testAdd()\n {\n $calculator = new Calculator();\n $result = $calculator->add(2, 3);\n $this->assertEquals(5, $result);\n }\n}\n\nO que está acontecendo aqui?
\n- \n
- Estendemos a classe
TestCase— a classe base do PHPUnit. \n - O método
testAddé nosso teste. O PHPUnit executa automaticamente todos os métodos que começam comtest. \n $this->assertEquals()é uma assertiva. Ela verifica se o valor esperado é igual ao valor retornado. \n