Introduction to Test Driven Development (TDD) - for Java using JUnit
Course Introduction
1h 49m

Test-Driven Development (TDD) is a discipline that helps to create error-free, quality code, and drives productivity by reducing and eliminating errors as well as providing many other benefits.

This entry-level training course is designed to bring you quickly up to speed with the basic features and processes involved in performing Java based test-driven development using JUnit5. It covers the key principles and practices of test-driven development, which you can then utilize within your own software engineering projects.

In this course, you'll be guided through an end-to-end sample project in which we use test-driven development to build, test, and package a Java 11 based library that will provide an API to convert Bitcoins into foreign currency.

If you have any feedback relating to this course, please contact us at

Learning Objectives

  • Understand the fundamentals of TDD and JUnit5
  • Use TDD to build, test, and package a Java 11 based library
  • Perform TDD by performing Red-Green-Refactor iterations
  • Learn how to use TDD to build, test, and package a Java 11 based library
  • Learn how to create unit tests using the JUnit5 testing framework

Intended Audience

  • Software developers interested in using TDD to build JDK11 based applications using Java


To get the most out of this course, you should have a basic understanding of JDK11 and the Java programming language, as well as software development and the software development life cycle (SDLC).



Hello and welcome to the Java test-driven development using JUnit course. Presented to you by Cloud Academy. In this lesson, I'll cover off the course agenda, intended audience, learning objectives and course prerequisites.

Now I'm really excited to be taking you through this course, test driven development or TDD is a discipline practiced and preached by many, helping you to correctly and rigorously produce bug free quality code. Over time your investment in Java based test driven development will help drive productivity by reducing and eliminating errors as well as providing many other benefits, such as improving your overall design, documenting your public end devices and safeguarding you against regressions and exit into future mistakes.

Before we continue, let me quickly introduce myself. I'm Jeremy Cook, I'm one of the trainers here at Cloud Academy specializing in DevOps in software engineering. If at any time during this course you'd like more information or have unanswered questions. Then please reach out to us at We really do appreciate all feedback.

This introductory level training course is designed to bring you quickly up to speed with the basic features and processes involved in performing Java based test driven development, using JUnit. This course will present you the key test-driven development principles and practices to utilize within your own software engineering projects.

Test-driven development defines a better and more robust approach to developing software. I'll get into this in more detail as the course progresses. In this course, I'll first provide you with the theory behind test-driven development. Once we've covered the fundamentals I'll then next demonstrate and inter wind sample Java project in which we use test driven development to build, test and package a JDK 11 Java based library.

The Java library we build and produce will be designed to provide an interface or API to convert Bitcoins into foreign currency. The library itself can then be imported into other Java based projects. Internally the library will itself make HTTP calls to CoinDesk's public API to get real time Bitcoin conversion data. The fact that this library is designed within external dependency will allow me to show you how to write unit test that involve mocks to mock out such dependencies.

The given coding demonstration will also allow you to observe firsthand how to perform test driven development, incorporating unit test creation and performing red, green, refactor iterations. Viewing this demonstration will enable you to replicate the same test driven development workflow within your own Java software engineering projects.

The Java code base built and written using test driven development practices as performed within each demonstration can be found hosted publicly in Cloud Academy's GitHub account. The exact repository location of the source code is provided here. Note, the repository is structured using branches, a separate branch exists for each of the given demonstrations. Therefore it should be easy for you to quickly jump into the area of interests by simply swapping into the related Git branch.

The intended audience for this course includes software developers interested in the test-driven development workflow and software engineers looking to learn how to use test-driven development to create and validate applications built with JDK 11, using the freely available JUnit5 testing framework.

By completing this course you will learn about the principles, practices and processes that drive a successful test driven development workflow, learn how to establish test driven development within a Java project using JUnit5, learn how to use JUnit5 effectively and finally, you'll learn and understand how to build and complete a full JDK 11 Java solution using test driven development in JUnit5.

The following prerequisites will be both useful and helpful for this course. A basic understanding of Java and the JDK and a basic understanding of software development and the software development life cycle. Okay, the course introduction is now being completed.

Go ahead and close this lesson and I'll see you shortly in the next one.

About the Author
Learning Paths

Jeremy is a Content Lead Architect and DevOps SME here at Cloud Academy where he specializes in developing DevOps technical training documentation.

He has a strong background in software engineering, and has been coding with various languages, frameworks, and systems for the past 25+ years. In recent times, Jeremy has been focused on DevOps, Cloud (AWS, Azure, GCP), Security, Kubernetes, and Machine Learning.

Jeremy holds professional certifications for AWS, Azure, GCP, Terraform, Kubernetes (CKA, CKAD, CKS).