In this practical 2-day workshop you will learn how to test and design real-world Java applications using Test-Driven Development (TDD). Throughout the course, you'll be developing a Java software system using Test-Driven Development and the modern Java testing tools. Guided by an expert mentor, you'll learn how to overcome challenges that developers face when applying TDD in "the real world" environment.
- How to perform unit testing, mocking, and stubbing with JUnit 5 and Mockito
- How to write good unit tests using F.I.R.S.T. principles
- How to test time, data, singletons, statics etc.
- How to test behavior-less classes, getters, setters & co.
- How to test integrations with the filesystem, databases, smtp servers, queues
- How to test external web services and gRPC integration with test doubles
- How to write good acceptance tests (ATs) and how to find balance with unit tests (and UI tests, if they exist)
- How to create fast, isolated, and repeatable, acceptance testing environments with Docker and Testcontainers
- How to test asynchronous code, systems, and Web APIs
- How to test database migrations
- How to get started with Test-Driven Development (TDD) and why "test-first" beats "test-last" approach
- How to design object relationships with CRC cards
- How to design systems with Acceptance Test-Driven Development (ATDD) and BDD
- How to use TDD and ATDD in legacy systems to make fearless and non-breaking code changes
- How to integrate TDD and ATDD into QA process, and how to organize effective ATDD/BDD process
You will also learn why customers don’t like writing BDD specifications, why developers and test engineers usually have two separate test suites (and what to do about it), when Test-Driven Development should be avoided, how to “sell” TDD to your team, and much more!
The course is highly recommended for teams that work together.
Java developers who are familiar with basic unit and integration testing, but are not yet comforable with Test-Driven Development.
Yes, you'll earn a certificate of accomplishment.
The course is taught in English.