Journal

Generating realistic test data with Java Faker
Quality assurance teams in Brisbane, Sydney and Melbourne spend a disproportionate amount of time inventing names, addresses, and identifiers that feel…
Testing Java Play Framework Applications With PlaySpec
Play Framework remains a quiet workhorse for Java backends, particularly inside teams that need hot reload, async-by-default controllers, and a small but…
How to Use MockMvc to Test Spring MVC Controllers
A Spring MVC controller sits at an important boundary in a Java application. It receives an HTTP request, binds input, validates data, invokes application…
Reliable Microservice Integration Tests with Docker Compose and Testcontainers
Microservices make it possible to release small, independently deployable components, but their boundaries also create more ways for software to fail. A…
Testing GraphQL APIs with Spring GraphQL and WebTestClient in practice
GraphQL has reshaped how many Australian engineering teams think about API contracts. Instead of a handful of REST endpoints that often return more data than…
Java Thread Safety Testing with Concurrency Libraries
Modern Java applications rarely run in isolation. A booking engine processing tour reservations from a Sydney data centre, a payments service clearing…
Using Mutation Testing With PIT to Improve Java Test Quality
A Java test suite can report excellent line coverage while still missing the defects that matter to customers. A test may execute a branch without checking its…
Testing Custom Exceptions and Error Handling in Java REST Controllers
A REST controller rarely fails in just one way. A request may contain malformed JSON, a valid identifier that does not exist, a business rule violation, or…
How to Mock Logging Output in JUnit Tests with Logback
Logs are often treated as a side effect of application code, yet they can carry important behaviour: an audit event, a rejected request, a retry warning, or a…
Testing Spring Boot Scheduled Tasks With TestScheduler
Scheduled jobs are easy to write in Spring Boot and surprisingly easy to test badly. A method annotated with @Scheduled may run every few minutes, call an…