• Stars
    star
    304
  • Rank 137,274 (Top 3 %)
  • Language
    Java
  • License
    MIT License
  • Created over 4 years ago
  • Updated about 1 month ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

πŸƒ Build Better Spring Boot Applications: A Comprehensive Testing Course to Boost Your Confidence and Productivity.

Deploy Spring Boot Applications With More Confidence

Masterclass

main branch: Build & Test Maven Project (main)

spring-boot-2 branch: Build & Test Maven Project (spring-boot-2)

code-along branch: Build & Test Maven Project (code-along)

Introduction

Build Better Spring Boot Applications: A Comprehensive Testing Course to Boost Your Confidence and Productivity.

The Testing Spring Boot Applications Masterclass is a deep-dive course on testing your Spring Boot applications. You'll learn how to effectively write unit, integration, and end-to-end tests while utilizing Spring Boot's excellent test support.

TL;DR:

  • testing recipes for several layers of your application (e.g., database, messaging, HTTP communication)
  • simple and straightforward explanations
  • testing best practices for Microservices
  • master Spring Boot's excellent test support
  • real-world course application with up-to-date testing library versions

After working through the online course ...

  • your technical testing skills will improve by understanding the ins-and-outs of testing Spring Boot applications
  • you'll deploy to production with more confidence (even on Friday afternoons)
  • sleep better at night thanks to a sophisticated test suite

Throughout the course you'll learn how to effectively use well-known testing libraries like JUnit 5, Mockito, Awaitility, LocalStack, Testcontainers, Selenide, WireMock, MockWebServer, and JsonPath.

Β» Enroll now for the Testing Spring Boot Applications Masterclass.

PS: You can watch four preview lessons by subscribing to the mailing list.

Course Application Architecture

To mirror a typical microservice architecture, the demo application uses the following tech stack:

  • Keycloak (open source identity and access management solution) to secure parts of the frontend and backend
  • Amazon SQS (Simple Queuing Service) for asynchronous message processing
  • PostgreSQL (RDBMS) to store data in a relational database
  • Single Page Application Frontend with React and TypeScript
  • Spring Boot backend with Java
  • Dependency on a remote REST API

Testing Spring Boot Applications Technical Architecture

Even though the technical setup for your day-to-day projects might differ, the testing recipes you'll learn are generic, and you can easily apply them for your tech stacks.

Testimonials

From Wim Deblauwe:

Philip has made a fantastic overview of the full testing landscape of Spring. The videos are clear and explain details and common pitfalls in great depth. Looking forward to the rest of the course.

From Siva:

I got an opportunity to review the course I find it wonderful for learning how to test Spring Boot applications leveraging modern testing frameworks and libraries....

I would highly recommend Masterclass for anybody working with Spring Boot applications.

From Anton Ε½danov:

For me testing a Spring application seemed like a challenge involving digging through numerous blog posts, documentation for JUnit, Mockito, and Spring Testing Reference which provide valuable information but are spread out and don't necessarily show the best practices.

After watching the Testing Spring Boot Applications Masterclass course I feel more confident in writing different types of tests for my apps. The course, videos, and the GitHub repository were of invaluable use to me demonstrating various testing mechanics the Spring ecosystem provides, and I will keep referencing the course materials in the future.

P.S. The application that is tested in the course is quite complex and covers a lot of real-world testing challenges one might encounter, which I found immensely useful for seeing the bigger picture.

Testing Spring Boot Applications Masterclass Testimonials

Further Resources and Links

Local Project Setup

Requirements

Mandatory requirements:

  • Java 17 (JDK flavour (OpenJDK/Azul/Oracle) does not matter). For the correct Java version setup I can recommend JEnv (Mac/Linux) and the Maven Toolchains Plugin (Windows)
$ java -version
openjdk version "17" 2021-09-14 LTS
OpenJDK Runtime Environment Zulu17.28+13-CA (build 17+35-LTS)
OpenJDK 64-Bit Server VM Zulu17.28+13-CA (build 17+35-LTS, mixed mode, sharing)
  • Docker Engine (Community Edition is enough) and Docker Compose:
$ docker version
Client: Docker Engine - Community
 Version:           20.10.6
 API version:       1.41
 Go version:        go1.13.15
 Git commit:        370c289
 Built:             Fri Apr  9 22:47:17 2021
 OS/Arch:           linux/amd64
 Context:           default
 Experimental:      true

Server: Docker Engine - Community
 Engine:
  Version:          20.10.6
  API version:      1.41 (minimum version 1.12)
  Go version:       go1.13.15
  Git commit:       8728dd2
  Built:            Fri Apr  9 22:45:28 2021
  OS/Arch:          linux/amd64
  Experimental:     false

$ docker-compose version
docker-compose version 1.26.2, build eefe0d31
docker-py version: 4.2.2
CPython version: 3.7.7
OpenSSL version: OpenSSL 1.1.1g  21 Apr 2020

Optional requirements:

  • Maven >= 3.6 (the project also includes the Maven Wrapper).

When using Maven from the command line, make sure ./mvnw -version reports the correct Java version:

$ ./mvnw -version

Apache Maven 3.8.4 (9b656c72d54e5bacbed989b64718c159fe39b537)
Maven home: /home/rieckpil/.m2/wrapper/dists/apache-maven-3.8.4-bin/52ccbt68d252mdldqsfsn03jlf/apache-maven-3.8.4
Java version: 17.0.1, vendor: Eclipse Adoptium, runtime: /usr/lib/jvm/jdk-17.0.1+12
Default locale: en_US, platform encoding: UTF-8
OS name: "linux", version: "5.4.0-92-generic", arch: "amd64", family: "unix"
  • IntelliJ IDEA or any IDE/Code Editor (Eclipse, NetBeans, Code, Atom, etc.)

Running the Project Locally

Assuming your local setups meets all requirements as stated above, you can now start the application:

  1. Make sure your Docker Engine is up- and running
  2. Start the required infrastructure components with docker-compose up
  3. Run the application with ./mvnw spring-boot:run or inside your IDE
  4. Access http://localhost:8080 for the application frontend
  5. (Optional) Access http://localhost:8888 for the Keycloak Admin interface

Valid application users:

  • duke (password dukeduke)
  • mike (password mikemike)

Running the Tests

Replace ./mvnw with mvnw.cmd if you're running on Windows.

Run all unit tests (Maven Surefire Plugin): ./mvnw test

Run all integration & web tests (Maven Failsafe plugin):

  1. Make sure no conflicting Docker containers are currently running: docker ps
  2. Make sure the test classes have been compiled and the frontend has been build and is part of the target/classes/public folder: ./mvnw package -DskipTest
  3. Execute ./mvnw failsafe:integration-test failsafe:verify

Run all tests together:

  1. Make sure no conflicting Docker container is currently running: docker ps
  2. Execute ./mvnw verify

Skip all tests (don't do this at home):

  1. Execute ./mvnw -DskipTests=true verify

Troubleshooting Setup Issues

The application fails to start on ARM64 (e.g. MacBook Pro M1)

See this GitHub issue for resolving it.

How to skip the Frontend Maven Plugin execution?

For skipping the frontend build, add -Dskip.installnodenpm -Dskip.npm to your Maven command, e.g., ./mvnw test -Dskip.installnodenpm -Dskip.npm.

The tests are failing, but I still want to build the project

You can pass -DskipTests to ./mvnw package if you experience test failures: ./mvnw package -DskipTests to build the application without running any unit test.

Next, make sure you have the latest version of this project (run git pull) and ensure the build status is green.

If you still encounter any test failures, please create an issue and include information about your environment.

The Keycloak Docker container terminates during startup

Adjust the docker-compose.yml file and remove the setup to import Keycloak configuration on the startup:

version: '3.8'
services:
  # ...
  keycloak:
    image: quay.io/keycloak/keycloak:18.0.0-legacy
    environment:
      - KEYCLOAK_USER=keycloak
      - KEYCLOAK_PASSWORD=keycloak
      - DB_VENDOR=h2
    ports:
    - "8888:8080"

Next, start everything with docker-compose up and watch the following video to configure Keycloak manually.

More Repositories

1

blog-tutorials

⭐ Codebase for various tutorials about Java, Spring Boot, AWS, Kotlin, and Testing
Java
771
star
2

java-testing-toolbox

πŸ”§ Testing Tools & Libraries Every Java Developer Must Know
Java
63
star
3

custom-maven-archetypes

πŸ“‚ Maven Archetypes to conveniently bootstrap new Java projects
Java
41
star
4

getting-started-with-microprofile

πŸ“™ Everything you need to know about MicroProfile
Java
36
star
5

testing-spring-boot-applications-primer

πŸš€ Getting Started with Testing Spring Boot Applications
Java
35
star
6

hands-on-mocking-with-mockito

πŸ‘ Hands-On Mocking With Mockito Online Course
Java
21
star
7

k8s-samples

πŸ“˜ Kubernetes Samples
Shell
18
star
8

quickstart-jakarta-ee-guides

πŸ“Ή Quickstart Guides for Jakarta EE for several application server
Java
13
star
9

learning-samples

πŸ“š Repository for different learning projects
Java
11
star
10

tdd-with-spring-boot-done-right

🚀 Boost your productivity with TDD (Test-Driven Development) and Spring Boot to accelerate your development. Build better, faster, and safer.
Java
6
star
11

purchasing-power-parity-api

Fair Global Pricing: Purchase Power Parity (PPP) Public & Free API 🌍
Java
6
star
12

sample-spring5-microservice

Sample Spring 5 Microservice
Java
4
star
13

spring5-mvc-rest

Example application for creating REST endpoints with Spring 5
Java
3
star
14

infrastructure-scripts

Collection of different shell commands and scripts
3
star
15

tdd-spring-boot-crud-api

β˜‘οΈ TDD (Test Driven Development) of a Spring Boot CRUD API
Java
3
star
16

progmot

⭐️ Unfiltered Thoughts About Programming & Motivation
HTML
3
star
17

learn-spring-kafka

Repository for https://www.udemy.com/apache-kafka-deep-dive-hands-on-using-javabuilt-in-scripts/
Shell
2
star
18

talks

🎀 Source Code Reference for Various Conference Talks
Java
2
star
19

spring5-recipe-webapp-reactive

Java
1
star
20

testing-spring-boot-applications-deep-dive-workshop

Java
1
star
21

javaee-microservices

Evaluating JavaEE for microservices
Java
1
star
22

sample-java-ee-and-microprofile-project

Sample project for Java EE 8 and MicroProfile 3.0
Java
1
star
23

spring-cloud-microservice-example

Example project for evaluating Spring Cloud projects
Shell
1
star
24

spring-jooq-example

Example project for investigating jOOQ's functionality
Shell
1
star
25

spring-cloud-example

Example for Spring Cloud technologies
Shell
1
star
26

spring5webapp

Spring 5 Webapp from Udemy Course
Java
1
star
27

dockerfiles

Repository for Dockerfiles
Shell
1
star
28

flutter-samples

Repository for flutter.io samples
Dart
1
star
29

spring-rest-client-examples

Example project for working with RESTful Spring APIs
Java
1
star
30

smart-car-insurance-backend

Smart cart insurance backend
Java
1
star
31

smart-car-insurance

Hackbay project
Java
1
star
32

dts-bluetooth-app

Digital Tech Summit Bluetooth App
TypeScript
1
star
33

spring5-recipe-webapp

Recipe webapp with Spring 5
Java
1
star
34

rieckpil

1
star