Programing
PHPUnit 13.1 e o Roadmap para 2026: A Transição para os Padrões de Teste do PHP 8.4+
Published:
•
Duration: 5:32
0:00
0:00
Transcript
Convidado: Valeu, Juliana! É um prazer enorme estar aqui. O Allur já faz parte da minha rotina de estudos, então trocar essa ideia sobre PHPUnit — que é praticamente o "ar que a gente respira" no ecossistema PHP — vai ser massa demais. E olha, tem muita coisa mudando, o pessoal vai precisar apertar os cintos, viu?
Apresentadora: Cara, eu vi isso! O anúncio do PHPUnit 13.1 pareceu um "divisor de águas". Por que você acha que eles decidiram ser tão rigorosos agora com esse roadmap pra 2026?
Convidado: Então, Ju, o que acontece é que o PHPUnit carregou muita retrocompatibilidade por anos. Isso é bom pra quem tem código legado, mas pro framework evoluir e ser rápido, esse peso morto atrapalha. A versão 13.1 é tipo um "aviso amigável": a gente tá indo pro PHP 8.4+, a API vai ser estrita e aquela "testabilidade por conveniência" vai acabar. O objetivo até junho de 2026, com a versão 13.2, é ter uma ferramenta muito enxuta. Eles querem que o teste reflita a qualidade do código, não que o framework de teste dê um "jeitinho" pra testar código ruim.
Apresentadora: Massa! E falando em PHP 8.4, tem essa questão da infraestrutura, né? O PHPUnit 13.1 já está pavimentando o caminho pra recursos novos. Eu li sobre os *Property Hooks*... Como isso entra no mundo dos testes?
Convidado: Cara, isso é sensacional. Com os *Property Hooks* no PHP 8.4, a gente vai conseguir simplificar muito os mocks de estado. Imagina que você tem uma classe `User` com uma propriedade `$fullName` que é calculada na hora. Antes, você talvez tivesse que mockar o método `getFullName()`. Agora, com os hooks, a lógica tá na propriedade. O PHPUnit tá se adaptando pra que esses novos recursos da linguagem sejam "cidadãos de primeira classe". E tem o bônus da performance, né? Com o JIT do PHP 8.4 e a limpeza interna do PHPUnit, aquelas suítes de testes gigantes que demoram uma eternidade vão rodar com um overhead bem menor. É mais produtividade no dia a dia.
Apresentadora: Isso é o sonho de qualquer dev! Mas nem tudo são flores, né? Eu vi que eles estão pegando pesado com os *Test Doubles*, os famosos mocks. Parece que a "magia negra" tá com os dias contados?
Convidado: (Risos) Com certeza! Sabe aquele hábito de mockar método privado ou fazer umas gambiarras com métodos estáticos? O PHPUnit 13.x tá vindo pra dizer: "Para com isso agora!". A API de `createMock()` e o `getMockBuilder()` estão ficando bem mais previsíveis e restritos.
Apresentadora: Mas isso não vai quebrar muita coisa por aí, Rafa?
Convidado: Vai, com certeza. Mas a real é o seguinte: se você precisa de um mock super complexo, com dez níveis de profundidade pra testar uma classe, o problema não é o PHPUnit... o problema é que sua classe tá fazendo coisa demais, sabe? Tá muito acoplada. A dica que eu dou pro pessoal é: comecem a trocar mocks de classes internas complexas por *Anonymous Classes* ou até Dummies manuais. E quem usa aquele método `withConsecutive()`, cuidado! Ele mudou drasticamente. O ideal agora é usar callbacks mais explícitos com o `willReturnCallback()`. É um código mais verboso? Talvez um pouco. Mas é muito mais seguro e fácil de entender daqui a seis meses.
Apresentadora: Faz todo sentido. É aquela história, o teste acaba sendo um termômetro da sua arquitetura. Se o teste tá difícil, o código tá estranho. E pro pessoal que tá ouvindo e pensando: "Meu Deus, minha suíte de testes tem 2 mil arquivos, como eu me preparo pra 2026?", qual o caminho das pedras?
Convidado: Cara, não precisa entrar em pânico, mas também não dá pra sentar em cima do problema. O segredo é não deixar pra 2026. A primeira coisa é: análise estática. Se você não usa PHPStan ou Psalm, comece ontem. Coloca no nível mais alto que conseguir. Isso já vai te mostrar onde os seus tipos estão furados, o que o PHPUnit 13.1 vai exigir muito mais.
Apresentadora: E tem o Rector também, né? Eu sou fã dele.
Convidado: Sou suspeito pra falar, mas o Rector é essencial! Ele tem regras prontas pra migrar do PHPUnit 10 pro 11 e agora pro 13. Ele automatiza a renomeação de métodos e ajustes de asserções. Mas a dica de ouro mesmo é: trate todo *Deprecation Warning* como se fosse um erro fatal. Se o PHPUnit 13.1 deu um aviso de que algo vai ser removido, não ignora. Resolve agora, porque quando chegar a 13.2 em 2026, seu código já vai estar "no estado da arte".
Apresentadora: Muito bom! Basicamente é antecipar o débito técnico pra não virar uma bola de neve. Eu acho fantástico como o ecossistema PHP tá amadurecendo rápido, né? A gente saiu daquela fama de "linguagem de script simples" pra um rigor técnico que bate de frente com qualquer outra linguagem moderna.
Convidado: Totalmente. E o PHPUnit é o grande maestro disso. Ele força a barra pra cima, e a gente, como desenvolvedor profissional, só tem a ganhar. No fim das contas, a gente entrega software mais resiliente e para de apagar incêndio em produção por causa de comportamento obscuro da linguagem.
Convidado: Eu que agradeço o convite, Juliana! Foi massa demais. O pessoal pode me achar no LinkedIn como Rafael Costa ou lá no GitHub, onde eu tô sempre mexendo em algum projeto open source de PHP. E fiquem de olho no blog oficial do phpunit.de, as atualizações lá são fundamentais. Valeu!
Apresentadora: Show de bola! E para você que ouviu a gente até aqui, valeu por sintonizar o Allur. Lembre-se: simplifique seus testes, modernize sua infra e não tenha medo do PHP 8.4. A gente se vê no próximo episódio. Tchau!
Tags
software engineering
backend
php
testing
performance
modernization
phpunit