Journal
How to Test Email Sending with GreenMail in Java Integration TestsEmail sending often looks simple from an application’s perspective: create a message, connect to SMTP, hand the message to a mail server, and continue. The…Writing reliable tests for Spring Boot Actuator endpointsSpring Boot Actuator exposes the operational surface of an application: health checks, metrics, environment details, application information and custom…Testing Java SSL/TLS Connections with Self-Signed Certificates in TestsSSL/TLS failures are often discovered late because a test suite uses plain HTTP or silently trusts every certificate. That approach can leave important…Mock Environment Variables in Java Tests with System StubsEnvironment variables are a convenient boundary between application code and its runtime configuration. They carry values such as database URLs, feature flags,…Testing Database Migrations with Flyway and TestcontainersDatabase migrations are executable changes to the structure and data of an application’s persistence layer. They create tables, add indexes, change…Using JUnit 5 Extensions for Custom Test Lifecycle HooksJUnit 5 extensions provide a clean way to add behaviour around test execution without forcing every test class to inherit from a shared base class. They can…How to write unit tests for Java Optional and exception handlingJava’s Optional and exception mechanisms are simple at the syntax level, yet they can hide important business rules. A method may return an empty value for a…Testing JSON processing with Jackson and Gson in JavaJSON sits between many parts of a modern Java system: REST controllers, message brokers, configuration files, payment gateways and browser clients. A test that…k6 for API performance testing: scripting and metrics that matterPlenty of Australian engineering teams discover their REST endpoints behave well in the Sydney lab and only stumble once traffic ramps up across regions that…Testing Custom Spring Boot Auto-Configuration and StartersA Spring Boot starter can make a library feel effortless: add one dependency, set a property, and the application receives correctly configured beans. That…