Hello HN, I am Parth. In my experience, the current form of testing automation takes too long. To solve this, I am creating a developer tool to speed up the code-test cycle for Java developers. It has two main parts:
Direct Invoke - lets you call any Java function directly, without the need to execute the whole call hierarchy. (e.g. an HTTP endpoint) In my normal coding workflow, I use the “Evaluate Expression” feature inside IntelliJ IDE. I usually put a breakpoint somewhere in the code and after hitting the breakpoint by calling an HTTP api, let the execution remain paused while I explore and see the return values of functions. “Evaluate Expression” was quite useful in exploring new codebases and checking return values of my own functions as a sanity test. The direct invoke feature implements the same functionality without needing to hit a breakpoint. Now, I can just navigate to any function in the editor and execute it. The parameter values are input as JSON and deserialize to an object of the required class instances.
Atomic Run - lets you hot-reload the code changes and highlights the difference in the return values of the changed function before and after the hot-reload. I feel Atomic Run has the potential of replacing unit test cases, but there is a long way to go. I am thinking of implementing
- Option for mocking dependency calls: We want to give the developer more control over the testing environment by allowing them to mock downstream dependency calls.
- Customizing assertions: Not all differences in return values indicate breaking changes. Assertions should be flexible to accommodate non-breaking changes.
- Workflow to save this data to a file (thinking something like JSON based fixtures): making it easier to organize and reuse test data.
This plugin is still in the early stages, so we'd appreciate your help in ironing out any bugs you come across. Get in touch with me on my discord channel.
To try it out, install Unlogged from the IntelliJ Marketplace and start your java application using the java agent (the plugin has instructions to download)
Link to try the plugin: https://plugins.jetbrains.com/plugin/18529-unlogged
Your HTTP use case was a good one as that is still very tedious generally. There are some less well integrated solutions that have come up from time to time, but in general being able to run the HTTP request once and from then on mock the request/result easily would be great.
Hot reload seems to be something that comes and goes. Android Studio has had it and then not had it and then had it again several times. The cases in which it works seem to be fairly arbitrary. Improvements in this space would be great.