Regression free code changes, Super fast.

Open source record and replay for Java with assertions, mocking and code coverage.

Record and Replay
Custom Assertions
Mocking with recorded data

Trusted by fast moving engineers at

repute logorepute logoayu health client

Generate JUnit Tests

With the recorded data, generate JUnit tests with just one click.
Pick your mocking framework
Pick your serializer
Save the generated code
Generated
5000+ JUnit tests

Mocking

We inject mocks in your code in run time so that you can replay your methods with mocks enabled.
Mock APIs, DB calls and downstream services with the recorded data
Mock as you write the code
Enable permanent mocking to speed up your dev cycle
Mocking
Play with the mocking switch so that you can replay/test in unit or integration style

Visual Code Coverage

See the lines of code executed, in real time.
Get rid of unused code
Meet coverage goals with visual feedback
Get instant code coverage reports
90%+
Shoot coverage in minutes

Debug where it matters

With Direct Invoke, start execution java methods directly.
Avoid the step in step over dance
No need to expose an http end point to test your methods
Debug deep down in your code with direct breakpoints

Avoid the exponential cost in bug fixing!

Replay pre-recorded traffic as you code and know what you are breaking, instantly.

The Game-Changing Benefits for Java Developers

Save time, deploy confidently, and ensure code stability with Unlogged's automated snapshot testing for Java developers.

Save Time

Unlogged automatically captures the input and return values, and alerts you of possible breaking changes, instantly. This means faster time to market and faster bug fixes.

Record and Replay

You can now record method inputs and return values on a remote machine, which can then be easily replayed locally for testing purposes. This streamlined process saves developers time and effort.

Code and Deploy Confidently

As developers, we wished to know what we are going to break in production as we code. With Unlogged, you know what you are breaking, right when you code. You can now deploy your changes more confidently.

Call Java Methods Directly

It’s frustrating to debug deep down in your code with Swagger or Postman. You can now call any Java methods directly, and start debugging where it matters.

Mocking on Demand

It's impossible to keep all microservices running all the time. We let you mock API, DB calls, downstream services & file operations with the recorded data. What's more: you can even define mocks as you code without any recording.

Combined Unit and Integration Testing

Unlogged provides the convenience of both Unit and Integration tests combined in a single tool. You can finally move on from the unit vs integration tests debate, since Unlogged offers both in one.

unlogged logo cutout
How to get started with Unlogged
1

Install the Unlogged plugin from the IntelliJ Marketplace

2

Add the dependency in your project’s pom.xml

3

Add this annotation on the main method of your project: @Unlogged

4

Debug your code, and call any method directly, using Direct Invoke.

How does it work?
We hot reload your code changes and re-run only the changed function with a set of pre-recorded inputs. We then compare the return values of these functions and tell you if something changed.
Know the breaking changes, as you code.
Shoot your code coverage to 90%+ in minutes.
No context switch - test what you changed, thoroughly.
Start debugging right where it matters.
Bug Bounty Program

Join our Bug Bounty Program to improve our open-source tool's stability, usability, and security. Earn rewards for responsibly disclosing any issues you find.

Video Tutorials

Deep dive into the features

1 - Record & Replay

  • Install the plugin
  • Add Dependency & Annotation
  • Start Debugging!

2 - Custom Assertions

  • Call Methods directly
  • Replay methods
  • Add assertions around replay

3 - Increase Code Coverage

  • Track Code Coverage
  • Get rid of unused code
  • Deploy code changes confidently

4 - Mocking

  • Mock with recorded data
  • Mock as you write the code
  • Speed up your dev cycle
We have been using Unlogged for the past few months and it has been a value add given that we are a startup and we don't really have enough bandwidth to spend on writing unit tests and thinking about code coverage. It helps us generate unit tests within minutes and is easy once you get used to it! It took us sometime to use it when the product was in early stage but the Unlogged team has been very proactive in resolving the blockers!
Yatharth Lakhera
Senior Software Engineer, Ayuhealth
We are the early adopters of Unlogged to automatically generate the unit test cases for our Java code. We were pleasantly surprised to see the results of what this plugin provided us that normally used to take manual efforts of ~2-3 hours by our developers. The team at Unlogged was very much supportive to help our developers train and start using the tool effectively. We would continue to use the tool for all of our remaining codebases. Can't wait to try out the next set of features.
Pranav Khambayatkar
VP & Head of Engineering
faq icon

FAQs

Join our discord channel for any other questions.

How does Unlogged work?
dropdown icon

Unlogged uses bytecode instrumentation to intercept method calls and log their input arguments and return values. These logs are then stored in a structured format for later replay. Check our blog to learn more about it.

What are the benefits of using Unlogged?
Dropdown icon

Unlogged provides a powerful mechanism for regression testing, allowing developers to quickly verify the correctness of their changes by replaying recorded scenarios. It helps catch potential bugs right when you code.

Which programming languages does Unlogged support?

Currently, Unlogged supports Java backend projects. However, we are working on supporting Kotlin, Scala, Python, JavaScript, and GoLang in the future.

Can I use Unlogged in my production environment?

Unlogged is primarily intended for use in development and testing environments. It is not recommended to use it in production, as it introduces overhead due to the logging and recording.

How do I integrate Unlogged into my Java project?

To use Unlogged, you'll need to include the Unlogged dependency in your project and follow the provided setup instructions. Check the documentation to learn about this.

Can I customize what methods to log?

Currently, just adding the annotation @Unlogged records every method inside your Java code. In future, Unlogged will allow you to specify which methods you want to log and which ones to exclude. This level of customization will help manage the size of the logs and avoid logging sensitive data.

Are there any performance implications of using Unlogged?

While Unlogged can introduce some overhead due to the additional logging and recording, it is generally designed to have a minimal impact on performance. However, it's essential to use it judiciously and not in production environments.

Does Unlogged support asynchronous and multi-threaded code?

Yes, Unlogged can handle asynchronous and multi-threaded code. It maintains the context and thread-specific logs to ensure accurate recording and replay.

Can Unlogged handle changes in method signatures?

Currently, changes in the method signature need a re-recording. We are working on handling these changes gracefully.

Is Unlogged an open-source project?

Yes, Unlogged is an open-source project with its code repository and community support.

Where can I get help or report issues with Unlogged?

For any inquiries, issues, or community discussions, you can visit our GitHub repository.

Is your dev team tired of similar issues?
Mocking is hard icon
Long feedback loops
Developers wait for the end to end tests to run and know what they are breaking.
2x work icon
Maintaining Unit Tests
Unit Tests, although very useful, have a fickle life span. They need to be maintained and re-written even for small code changes to keep up with the code coverage policy.
feature icon
Mocking does little help
Unit tests mock a lot of dependencies, and external calls. In reality, a lot of issues are found in integration tests. Atomic Run executes changed code in integrated fashion.
end to end icon
Tracing and Logging
Figuring what went wrong on production, and re-creating scenarios that led to a bug, could be time taking and frustrating.
legacy code icon
Unending Regressions
Despite investing a lot of time and resources in QA, something breaks in production. More testing seems to delay feature release timelines.
unending regression bug icon
Meeting Coverage Goals
Writing unit tests takes time. Some of the teams we work with spent 50% of their time writing unit tests. For every new feature, meeting the policy of 90% plus code takes a lot of time from development work.
Be a part of our Open Source Community.
unlogged logo cutoutunlogged logo cutout