AI for PHP: How To Automate Unit Testing Using AI Assistant
Testing. If you’re anything like me, you’ll agree that it’s equal parts important and boring. It’s one of those things that isn’t much fun while you’re doing it, but you know it’ll pay dividends later on.
So, what makes testing so unpleasant?
For me, the biggest hurdle is the overhead that comes with the initial setup. I know that once I have a test in place, I’ll be happy to make changes and tweaks to it throughout the project’s lifespan. But getting started is what holds me back the most.
So what if that initial setup of writing a test could be simplified? What if we could get a rough outline of a test for free, use it as a starting point, and simply tweak it as needed? What if we could focus on the fun parts and have a computer do the boring stuff?
This is where AI can help us.
Just recently, we introduced a powerful tool into all our IDEs, including PhpStorm: JetBrains AI Assistant. In this blog post, I want to look at how we can use AI Assistant to automate the boring parts of programming, so that we can focus on the more exciting parts of testing.
Automated Unit Tests with AI Assistant
Generating unit tests is a perfect example of where AI Assistant can help us out. Let’s consider the following code snippet:

This is a snippet taken from a project called RFC Vote, which is open-source. You can find the full source code here. This project allows the PHP community to discuss open RFCs. People can make arguments for the pros and cons and have insightful discussions about the evolution of PHP.
This particular class is responsible for creating a comment on an existing argument. A comment belongs to a user, has a reference to an argument, and has a body. Finally, whenever a comment is written, notifications should be sent to all users following a specific argument.
Let’s use AI Assistant to scaffold a test for us and see what it can do.
Start by placing your cursor in the body of this __invoke method, then press Alt+Enter, and select AI Actions | Generate Unit Tests from the context menu.

AI Assistant will now write a draft version of a test for this class for you. If you want to learn how AI Assistant does all of this, you can read this post. When AI Assistant is done, you’ll see a draft version like so:

The most straightforward action is to press the Accept all button, which will create a new test file in the right location and copy this draft implementation into the real test file. You could, however, also press the Refresh button to generate a whole new implementation, in case you spotted any immediate problems.

In my case, I refreshed once or twice, pressed Accept all, and ran my test.

Pretty neat, right?
Now, hold on. There are a couple of other things to point out.
First, not all generations will run smoothly out of the box. For example, some versions included the RefreshDatabase trait, a common practice in Laravel tests. However, in this project, I have database testing set up a little differently, so I had to make one minor adjustment to the generated output. Sometimes, AI Assistant also generates code that doesn’t fully align with your code style. It does its best to take code style settings into account, but some details are tricky to get right.
Despite some shortcomings, keep in mind that our goal isn’t to generate the perfect test – it’s to have a scaffold in place that we can build on. AI Assistant is amazingly good at understanding the context of what we want to test and does a lot of things right. It saves time and allows us to focus on the more exciting parts of testing.
Pest automation
2023 has shown significant growth for the relatively new Pest testing framework. We at PhpStorm took over the development of the Pest plugin last year as well. Right now, AI Assistant support for Pest is a work in progress, and it will be available in the next major version, PhpStorm 2024.1. Stay tuned – we’ll definitely demonstrate how Pest users can benefit from AI Assistant in our upcoming blog posts.
Conclusion
Being able to scaffold unit tests automatically – with minimal manual work – is already pretty impressive, but there is some more fine-tuning to do.
Explore our next blog post from this series, where we look more closely at how we can fine-tune JetBrains AI Assistant’s test generation to save even more time. Subscribe to our blog in the subscription section below and don’t miss out on our news!
Useful links
Did you enjoy reading this blog post? Here are more from this series:
- AI for PHP: How to Tweak AI Prompts to Improve PHP Tests
- AI for PHP: How to Make AI Assistant Generate Test Implementations
Resources:
- AI Assistant in PhpStorm (documentation)
- Laravel support in PhpStorm
- AI Assistant pricing
Videos:
- JetBrains AI Assistant introduction
- Using PHP and AI to build a Markdown to Video convertor
- How to convert PHPUnit to Pest in 5 seconds
Subscribe to PhpStorm Blog updates
Discover more
IA para PHP: como automatizar testes de unidade usando o AI Assistant
Testes. Se você for como eu, concordará que eles são importantes, mas ainda assim muito chatos. É uma daquelas coisas que não é muito divertida de fazer, mas que você sabe que vai compensar mais tarde.
Mas o que torna os testes tão desagradáveis?
Para mim, o maior obstáculo é a sobrecarga que acompanha a configuração inicial. Sei que, depois de implementar um teste, ficarei feliz em fazer alterações e ajustes durante a vida útil do projeto. Mas, meu maior obstáculo é começar.
E se essa configuração inicial de escrever um teste pudesse ser simplificada? E se pudéssemos obter gratuitamente um esboço de teste, usá-lo como ponto de partida e simplesmente ajustá-lo conforme necessário? E se pudéssemos nos concentrar nas partes divertidas e deixar um computador fazer as coisas chatas?
É aqui que a IA pode nos ajudar.
Recentemente, introduzimos uma ferramenta poderosa em todos os nossos IDEs, incluindo o PhpStorm: o JetBrains AI Assistant. Neste post do nosso blog, quero ver como podemos usar o AI Assistant para automatizar as partes chatas da programação, para que possamos nos concentrar nas partes mais interessantes dos testes.
Testes de unidade automatizados com o AI Assistant
A geração de testes de unidade é um exemplo perfeito de onde o AI Assistant pode nos ajudar. Vamos considerar o seguinte snippet de código:

Este é um trecho retirado de um projeto chamado RFC Vote, que é open-source. Você pode encontrar o código-fonte completo aqui. Este projeto permite que a comunidade PHP discuta RFCs abertas. As pessoas podem argumentar sobre os prós e os contras e ter discussões perspicazes sobre a evolução do PHP.
Essa classe específica é responsável por criar um comentário sobre um argumento existente. Um comentário pertence a um usuário, tem uma referência a um argumento e tem um corpo. Por fim, sempre que um comentário é escrito, notificações devem ser enviadas a todos os usuários que seguem um argumento específico.
Vamos usar o AI Assistant para criar um teste para nós e ver o que ele pode fazer.
Comece colocando o cursor no corpo deste método __invoke, pressione Alt+Enter e selecione AI Actions | Generate Unit Tests no menu de contexto.

O AI Assistant agora escreverá uma versão preliminar de um teste para essa classe para você. Se quiser saber como o AI Assistant faz tudo isso, leia este post. Quando o AI Assistant terminar, você verá uma versão de rascunho como esta:

A ação mais direta é pressionar o botão Accept all, que criará um novo arquivo de teste no local correto e copiará esse rascunho de implementação para o arquivo de teste real. No entanto, você também pode pressionar o botão Refresh para gerar uma implementação totalmente nova, caso detecte algum problema imediato.

No meu caso, atualizei uma ou duas vezes, pressionei Accept all e executei meu teste.

Muito legal, não é?
Agora, espere um pouco. Há algumas outras coisas para destacar.
Em primeiro lugar, nem todas as gerações funcionarão diretamente sem problemas. Por exemplo, algumas versões incluíam a característica RefreshDatabase, uma prática comum em testes Laravel. No entanto, neste projeto, tenho os testes de banco de dados configurados de maneira um pouco diferente, então tive que fazer um pequeno ajuste na saída gerada. Às vezes, o AI Assistant também gera código que não se alinha totalmente ao seu estilo de código. Ele faz o possível para levar em consideração as configurações de estilo de código, mas alguns detalhes são difíceis de acertar.
Apesar de algumas deficiências, tenha em mente que nosso objetivo não é gerar o teste perfeito, e sim ter uma estrutura sobre a qual possamos construir. O AI Assistant é incrivelmente bom em entender o contexto do que queremos testar e faz muitas coisas certas. Isso economiza tempo e nos permite focar nas partes mais interessantes do teste.
Automação em Pest
2023 mostrou um crescimento significativo para o relativamente novo framework de teste Pest. A equipe do PhpStorm assumiu o desenvolvimento do plug-in Pest no ano passado também. No momento, o suporte do AI Assistant para Pest é um trabalho em andamento e estará disponível na próxima versão principal, o PhpStorm 2024.1. Fique ligado – definitivamente demonstraremos como os usuários do Pest podem se beneficiar do AI Assistant nos próximos posts do nosso blog.
Conclusão
Ser capaz de criar testes de unidade automaticamente – com o mínimo de trabalho manual – já é bastante impressionante, mas ainda há mais alguns ajustes a serem feitos.
Explore o próximo post desta série no nosso blog, no qual analisamos mais de perto como podemos ajustar a geração de testes do JetBrains AI Assistant para economizar ainda mais tempo. Assine nosso blog na seção de assinatura abaixo e não perca nossas novidades!
Links úteis
Materiais:
- IA para PHP: como ajustar prompts de IA para melhorar testes de PHP
- AI Assistant no PhpStorm (documentação)
- Suporte para Laravel no PhpStorm
- Preços do AI Assistant
Vídeos:
- Introdução ao JetBrains AI Assistant
- Usando PHP e IA para construir um conversor de Markdown para vídeo
- Como converter PHPUnit em Pest em 5 segundos
Artigo original em inglês por:
Subscribe to PhpStorm Blog updates
Discover more
IA para PHP: cómo automatizar las pruebas de unidad con AI Assistant
Pruebas. Si se parece un poco a mí, estará de acuerdo en que es algo tan importante como aburrido. Es una de esas cosas que no se disfrutan mucho mientras se hacen, pero que se sabe que reportarán dividendos más adelante.
Entonces ¿por qué las pruebas son tan poco gratificantes?
Para mí, el mayor obstáculo es el gran esfuerzo que conlleva la configuración inicial. Sé que una vez que tenga una prueba configurada, podré modificarla y retocarla a lo largo de la vida del proyecto. Pero empezar es lo que más me cuesta.
¿Y si esa configuración inicial de escribir una prueba pudiera simplificarse? ¿Y si pudiéramos obtener gratuitamente el borrador de una prueba, utilizarlo como punto de partida y simplemente modificarlo según sea necesario? ¿Y si pudiéramos dedicarnos a las partes divertidas y hacer que un ordenador se encargara de las aburridas?
Aquí es donde la IA puede ayudarnos.
Recientemente, hemos añadido una potente herramienta a todos nuestros IDE, incluido PhpStorm: JetBrains AI Assistant. En este artículo del blog, me gustaría analizar cómo podemos utilizar AI Assistant para automatizar las partes aburridas de la programación, para así poder centrarnos en las partes más emocionantes de las pruebas.
Pruebas de unidad automatizadas con AI Assistant
La generación de pruebas de unidad es un ejemplo perfecto de cómo AI Assistant puede ayudarnos. Consideremos el siguiente fragmento de código:

Este es un fragmento tomado de un proyecto llamado RFC Vote, que es de código abierto. Encontrará el código fuente completo aquí. Este proyecto permite a la comunidad PHP debatir sobre las solicitudes de comentarios (RFC) abiertas. Los usuarios pueden esgrimir argumentos a favor y en contra, y mantener debates constructivos sobre la evolución de PHP.
Esta clase concreta se encarga de crear un comentario sobre un argumento existente. Un comentario pertenece a un usuario, tiene una referencia a un argumento y tiene un cuerpo. Por último, cada vez que se escriba un comentario, se enviarán notificaciones a todos los usuarios que sigan un argumento específico.
Utilicemos AI Assistant para que nos estructure una prueba y veamos lo que es capaz de hacer.
Comience situando el cursor en el cuerpo de este método __invoke y, a continuación, pulse Alt+Intro y seleccione AI Actions | Generate Unit Tests en el menú contextual.

AI Assistant esbozará ahora un borrador de una prueba para esta clase. Si desea saber cómo hace todo esto AI Assistant, puede leer este artículo. Cuando AI Assistant haya terminado, verá una versión del borrador como esta:

La acción más directa es pulsar el botón Accept all, lo que creará un nuevo archivo de prueba en la ubicación correcta y copiará este borrador de implementación en el archivo de prueba real. No obstante, también puede pulsar el botón Refreshpara generar una implementación completamente nueva si ha detectado algún problema evidente.

En mi caso, actualicé una o dos veces, pulsé Accept all y ejecuté mi prueba.

No está mal, ¿verdad?
Ahora, espere. Hay un par de detalles más que señalar.
En primer lugar, no todas las generaciones funcionarán sin problemas desde el principio. Por ejemplo, algunas versiones incluían la característica RefreshDatabase, una práctica común en las pruebas de Laravel. Sin embargo, en este proyecto, tengo las pruebas de la base de datos configuradas de forma un poco diferente, por lo que tuve que hacer un pequeño ajuste en el resultado generado. A veces, AI Assistant también genera código que no se adapta totalmente a su estilo de código. Hace todo lo posible por tener en cuenta los ajustes de estilo del código, pero algunos detalles son difíciles de acertar.
A pesar de algunas deficiencias, tenga en cuenta que nuestro objetivo no es generar la prueba perfecta, sino disponer de una estructura que nos sirva de base. AI Assistant es sorprendentemente bueno a la hora de entender el contexto de lo que queremos probar, y hace muchas cosas bien. Ahorra tiempo y nos permite centrarnos en las partes más emocionantes de las pruebas.
Automatización de Pest
2023 ha mostrado un crecimiento significativo del relativamente nuevo marco de pruebas Pest. En PhpStorm también nos hicimos cargo del desarrollo del complemento Pest el año pasado. En estos momentos, la compatibilidad de AI Assistant con Pest es un trabajo en curso, y estará disponible en la próxima versión principal: PhpStorm 2024.1. No se lo pierda: le demostraremos cómo los usuarios de Pest pueden sacar partido de AI Assistant en nuestros próximos artículos del blog.
Conclusión
Ser capaz de estructurar las pruebas de unidad de forma automática ―con un trabajo manual mínimo― ya es bastante impresionante, pero aún se puede optimizar el proceso.
Eche un vistazo a nuestro próximo artículo del blog de esta serie, en el que analizaremos más detenidamente cómo podemos optimizar la generación de pruebas con JetBrains AI Assistant para ahorrar aún más tiempo. Suscríbase a nuestro blog en la sección de suscripción que encontrará más abajo y no se pierda nuestras novedades.
Enlaces útiles
Recursos:
- IA para PHP: cómo optimizar las peticiones a la IA para mejorar las pruebas de PHP
- AI Assistant en PhpStorm (documentación)
- Compatibilidad de Laravel con PhpStorm
- Precios de AI Assistant
Vídeos:
- Presentación de JetBrains AI Assistant
- Utilización de PHP y de la IA para crear un convertidor de Markdown a vídeo
- Cómo convertir PHPUnit a Pest en 5 segundos
Artículo original en inglés de: