Journal
Testing File Upload and Download Endpoints in Spring BootFile upload and download endpoints sit quietly in most Spring Boot services until something goes wrong in production. A misplaced Content-Type header, a…Writing Readable BDD Tests with Cucumber and JavaBehaviour-driven development has reshaped how Java teams think about test automation. Rather than treating tests as private developer artefacts, BDD encourages…Parallelizing JUnit 5 Tests for Faster ExecutionSoftware teams across Sydney, Melbourne, and Brisbane often juggle two competing pressures. Production codebases keep expanding, and the unit and integration…Testing Kafka producers and consumers in Java with Embedded KafkaApache Kafka sits at the heart of many Australian event-driven platforms, from the real-time price feeds at ASX to the transaction pipelines powering…How to mock static methods in Java with Mockito and PowerMockStatic methods sit quietly inside almost every legacy codebase, and they often become the first obstacle for developers trying to bring a project under proper…Contract Testing With Spring Cloud Contract for MicroservicesA microservices architecture splits what used to be a single deployable into dozens of independent services. Each one ships on its own schedule, behind its own…Secrets of flaky test detection and fixing in CI pipelinesA flaky test passes and fails without a relevant code change. That behaviour makes a CI pipeline difficult to trust: a green build can hide a defect, while a…Performance testing REST endpoints with Gatling and ScalaA REST API can appear healthy in functional tests and still struggle when real users arrive concurrently. Response times rise, connection pools fill,…Strategies for Generating Realistic Test Data with InstancioGood test data sits between two extremes. Values that are completely random rarely expose meaningful defects, while hand-written fixtures become repetitive,…Database Testing With Testcontainers in Java MicroservicesA Java microservice can pass every unit test and still fail when it meets a real database. SQL dialect differences, transaction boundaries, migration ordering,…