unlogged-sdk
mockito-object-injection
unlogged-sdk | mockito-object-injection | |
---|---|---|
2 | 1 | |
142 | 8 | |
9.9% | - | |
9.6 | 4.5 | |
4 days ago | 7 months ago | |
Java | Java | |
MIT License | Apache License 2.0 |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
unlogged-sdk
-
Show HN: Unlogged (YC S22) – open-source record and replay for Java
Hello HN! Parth, and Shardul here. We have been building unlogged.io for the last 21 months. We started as a time travel debugger and pivoted to record and replay with assertions, mocking, and code coverage. You can save the replays in the form of a JSON and commit them to your git.
Both Parth and I come from an e-commerce/payments background where production bugs meant heavy financial losses. Big billion days/Black Friday sales meant months of code freezes with low productivity. Before committing the code, we wanted to replay production traffic and know the breaking changes right away, like in sub-second. Kind of like unit+integration tests on steroids.
So, we built an SDK that adds probes to the code in compile time. The SDK logs code execution, in detail.
Git: https://github.com/unloggedio/unlogged-sdk
We also built an IDE plugin that keeps monitoring code changes, hot reloads these changes, replays the relevant methods, and alerts on failing replays. It also lets developers call Java methods directly, mock downstream methods in run time, highlight code coverage in real-time, and show performance numbers for methods with inlay hints. (right above each method)
Git: https://github.com/unloggedio/intellij-java-plugin
We are excited to launch the first version of our product that replays with assertions + mocking + code coverage reports right inside the IDE.
Link to our IntelliJ plugin: https://plugins.jetbrains.com/plugin/18529-unlogged/
Record and Replay Demo: https://www.youtube.com/watch?v=muCyE-doEB0
Define Assertions on Replay: https://www.youtube.com/watch?v=YKsi1p634-M
Track Code Coverage: https://www.youtube.com/watch?v=NMmp954kfaU
Generate JUnit Test Cases: https://www.youtube.com/watch?v=rTUmg5b1Z_Q
Mocking when replaying: https://www.youtube.com/watch?v=O_aqU1u-Kmw
Documentation: http://read.unlogged.io/
Roadmap:
1. Create a production logger
-
Level-up your Java Debugging Skills with on-demand Debugging
Link to the source code: https://github.com/unloggedio/unlogged-sdk
will fix the link on the plugin page, thanks for noticing it.
mockito-object-injection
-
JEP 457: Class-File API for Parsing, generating, transforming
This is pretty exciting... I've used them all libraries at this point in my career: CGLib, ASM, BCEL, ByteBuddy, Javassist, etc... each has its pluses and minuses. I've designed everything from profiling agents, to systems that pack decimals into EBCDIC and invoke COBOL programs on big IBM iron, to lightweight JIT compilers, all using these libraries.
> In 2002, the visitor approach used by ASM seemed clever
I couldn't agree more. The visitor pattern was very hard to explain/justify back then, and still difficult to explain to newbie programmers just entering the profession.
Looking at the examples, I think this is going to be an official replacement for ASM, meaning it's going to be pretty low level. The use of streams pretty straightforward.
If anyone from the JEP is reading this: I have two pieces of feedback!
First, take some inspiration from the way CDI Portable Extensions work. This is probably the most delightful extension API I've ever used. The @Observe callbacks are super simple to explain to people and it's really easy to write extensions for the framework.
Next, I wouldn't ignore the need for a higher-level API akin to ByteBuddy or Javassist. Sometimes I just want to write an interpreter or intercept a method call and thats it.
For example in my Junit/Mockito extension https://github.com/exabrial/mockito-object-injection I need to intercept a call to the class under test in order to lazily inject dependencies at the last possible moment. While I certainly could do this with ASM, Javassist makes this fairly simple with it's MethodHandler api.
Side note, it's a damn shame we don't have a mobile operating system that is JVM native :/ All this cool APIs simply never reach a huge number of devices.
What are some alternatives?
testing-spring-boot-applications-masterclass - 🍃 Build Better Spring Boot Applications: A Comprehensive Testing Course to Boost Your Confidence and Productivity.
Mockito - Most popular Mocking framework for unit tests written in Java
testsigma - A powerful open source test automation platform for Web Apps, Mobile Apps, and APIs. Build stable and reliable end-to-end tests @ DevOps speed.
mock-box - Mock-Box is a lightweight and powerful mock library that supports testing.
JetBrainsRuntime - Runtime environment based on OpenJDK for running IntelliJ Platform-based products on Windows, macOS, and Linux
elementary - A suite of libraries that simplify creating and unit testing annotation processors.
intellij-java-plugin - IntelliJ plugin with java language support
java-testing-toolbox - :wrench: Testing Tools & Libraries Every Java Developer Must Know
Rental-Car-Agency - This is a REST API service built with the Spring Boot framework, designed to demonstrate how to build a simple Spring Boot application that interacts with a MySQL database.
Java_SpringBoot_Gym_Backend - A backend for a gym website with a number of use case / endpoints created and includes unit/integration tests. Intended to be the backend for a React or Vue capstone site. Utilises controller-service-repository pattern.