Leveraging AI to Simplify Test Writing in IntelliJ
Today, I would like to share a quick productivity tip. As developers, we sometimes skip writing extensive tests, particularly when under time pressure. As much as tests are necessary, they can also be tedious to write. For example, due to learning a new testing framework or when dealing with intricate business logic. Furthermore, this task often involves a certain degree of repetitive boilerplate, which can be a considerate discouragement for some developers. In this post, we’ll explore how generative AI saves time and effort without compromising on quality of writing detailed tests.
This post aims at Java and Kotlin developers who use IntelliJ as their IDE. We’ll guide you through the process of automatically generating a test class using IntelliJ, complemented by the EasyCode plugin powered by ChatGPT.
Table of Contents
Setup
- IntelliJ IDEA. You can use a Community edition.
- ChatGPT – EasyCode plugin
Keep it DRY
Don’t repeat yourself, let’s start there. Crafting tests by hand from scratch is tedious to say the least. Luckily, IntelliJ can automatically generate a test class for you.
Let’s suppose you want to test a simple calculator.
class Calculator {
fun add(num1: Int, num2: Int): Int {
return num1 + num2
}
fun subtract(num1: Int, num2: Int): Int {
return num1 - num2
}
fun multiply(num1: Int, num2: Int): Int {
return num1 * num2
}
fun divide(num1: Int, num2: Int): Double {
return num1.toDouble() / num2.toDouble()
}
}
To generate a test class (on Mac OS) press ā + N, choose Test and pick the desired framework. I’m using Kotest.
The outcome is an empty test class.
Don’t Write Tests. Generate Them.
Next, we will utilize the ChatGPT – EasyCode plugin to generate a skeleton or basic structure of the actual tests. We’ll initiate this process with some minimal customization to streamline future usage.
Assuming you’re in the test class, press ā + A to select all its content. Then, right-click to get a contextual menu and choose Custom Prompt.
I’ve called my custom prompt /kotest, here is what it contains: “Generate unit tests based on kotest and junit5”
Summary
A lot is happening in the space of generative AI and automation of development tasks. In this post, we looked at a simple way how to leverage one of the IntelliJ plugins, EasyCode, to generate a rich test suite. I showed you how to apply a minimalistic customization so that the future use is easier. These tools are quickly evolving and features like the one shown today will likely become readily available out of the box. Stay tuned for further updates on this exciting topic. I hope that today’s article enhanced your productivity as a developer. Feel free to share your thoughts, ideas, and experiences on making AI part of your daily routines.