In this series of liveProjects, you’ll put test-driven development (TDD) into practice by balancing the delivery of new features with incremental improvements to an outdated-commerce app. In each project, you’ll encounter real-world issues with the design of the code and tests that make shipping software with TDD difficult. You’ll uncover tools and strategies to overcome these problems, helping you start using test-driven development in your daily work. Through hands-on projects, you’ll increase test coverage of legacy code, refactor to improve design, and write end-to-end features.
In this liveProject, you’ll reduce a test’s coupling to the implementation (thereby reducing the tests’s dependence on the details of how the code works) and extend a feature using test-driven development for an e-commerce record store. You’ll begin by applying techniques to increase test readability, then implement a full stack feature that requires changes to all layers of the system. Lastly, you’ll tidy up by refactoring the implementation to reduce conceptional duplication, making the code easier to read and maintain.
In this liveProject, you’ll refactor the tests for a legacy e-commerce Spring application to improve readability, then add missing test coverage. You’ll use test-driven development to add a new coupon feature, organize your unit tests in a readable way that exposes missing coverage, and then fill in gaps in coverage by applying characterization testing so that the system can be changed without fear of adding bugs.
In this liveProject, you’ll replace two common testing anti-patterns while also creating new features for a Java Spring e-commerce application. Testing anti-patterns can be the bane of development, slowing deliveries while providing no benefit to software quality. You’ll use Test-Driven Development to balance delivering new functionalities with improving code design.
In this liveProject, you’ll explore the difference between mock-based and traditional Test-Driven Development. You’ll write tests using mock objects for an e-commerce store, then overcome common mocks anti-patterns—including the dreaded mocks returning mocks issue. You’ll tinker with a realistic codebase which contains missing test coverage, design shortcomings, and third-party integrations, then practice evolutionary architectural design and the mockist style of TDD.
In this liveProject you will work to overcome common issues that emerge when teams use microservices and make heavy use of integration tests. This problem is known as flaky tests, which pass and then fail without the code changing. This can cause your team to produce more bugs, as they ignore their tests due to them failing when code isn’t broken. This project shows how to overcome flaky database tests caused by tests producing side effects that affect other tests. You will practice eliminating flaky API integration tests by using consumer-driven contract testing with Spring Cloud Contract. This will verify that both the server and client conform to the same contract, enabling you to be confident that any changes to an API won’t break the wishlist feature.
This series of liveProjects is for Java software engineers with an intermediate level of experience using Spring MVC to build web applications. To begin these projects, you need to be familiar with the following: