Sempre fui fascinado pelas palestras de TDD, porém nunca consegui aplicar eles no meu dia a dia, principalmente por trabalhar em projetos pequenos que não “tinham verba” para esse tipo de refinamento.
Estou criando um painel de controle para uma aplicação minha e com isso estou aproveitando para estudar sobre o tema.
Criei nesta aplicação um teste simples para verificar se a aplicação consegue disparar um e-mail.
Instalação PHPUnit
A recomendação é que ele roda a nível de aplicação e não globalmente, assim a instalação é bem simples, via composer:
composer require --dev phpunit/phpunit ^9.2
ou se você como eu usar um composer.json:
{ "name": "projeto/nome", "description": "Painel de controle do site Mind Design 2020", "type": "project", "minimum-stability": "stable", "license": "PRIVATE", "authors": [ { "name": "Marcelo Costa", "email": "mail@mail.com", "role": "Developer", "homepage": "https://site.com.br" } ], "config": { "vendor-dir": "vendor" }, "autoload": { "psr-4": { "Source\\": "source/" }, "files": [ "source/Config.php" ] }, "require": { "phpunit/phpunit": "^9", "phpmailer/phpmailer": "6.1.*" } }
Para verificar se a instalação foi feita corretamente, digite na pasta do projeto:
./vendor/bin/phpunit --help
Se mostrar a ajuda do PHPUnit é porque esta tudo certo!
Rodando os testes
Para rodar os testes você precisa digitar:
// versão padrão ./vendor/bin/phpunit tests // versão com formatação ./vendor/bin/phpunit tests --testdox
Como você ainda não escreveu nenhum teste, ele deve retornar falando que não foram executados testes.

Escrevendo testes
Todos os testes ficarão na pasta ./testes do projeto.
Como boa prática o ideal é o que nome do arquivo seja escrito em StudlyCaps (as iniciais em maiúscula, incluindo a primeira letra).
Agora é só escrever os testes todos nesta pasta e executar sempre que necessário.