Painless Integration Testing with Docker and Testcontainers
2020, September 17 • 14:00 CEST
Unit testing is fine, but without proper integration testing, especially if you work with external resources like databases and other services, you might not know how your application will actually behave once it has been deployed to the real production environment.

Before Docker, configuring the environment for integration testing was painful – people were using fake database implementations, mocking servers, usually it was not cross-platform as well. However, thanks to Docker, now we can quickly prepare the environment for our tests.

Kevin Wittek
Head of Blockchain Research Lab at Institute for Internet Security
Testcontainers co-maintainer and Testcontainers-Spock author, passionate about OSS, containers and Linux. Oracle Groundbreaker Ambassador. Software Crafter and testing fan. Fell in love with TDD because of Spock. Believes in Extreme Programming as one of the best Agile methodologies. Likes to write MATLAB and Python programs to support his wife in performing behavioural science experiments with pigeons. Plays the electric guitar and is a musician in his second life.

After many years working in the industry as an engineer, Kevin is now doing his PhD in computer science in the field of distributed systems engineering and is leading the Blockchain Lab at the Institute for Internet Security in Gelsenkirchen, Germany at the Westphalian University of Applied Sciences.
Workshop Format
The best way to improve your professional skills

15 min

3,5 hours

30 minutes

15 min
Workshop Program
2020, September 17
12:00 – 12:15
12:00 – 12:15
Welcome speech. Overview.
12:15 – 13:00
12:15 – 13:00
Lambda Expression
Functional programming concept, the syntax for lambdas, replacing with anonymous inner classes. etc.
13:00 – 13:07
13:00 – 13:07
13:07 – 13:27
13:07 – 13:27
Method reference, static, and default method in the interface
1. Method reference
2. Static method
3. Default method
4. Optional
13:27 – 14:27

13:27 – 14:27

Best practices and useful patterns
1. Java inbuilt functional interfaces.
2. Execute around patterns etc.
14:27 - 14:37

14:27 - 14:37

14:37 - 15:27

14:37 - 15:27

Java Stream
1. The stream interface, stream processing,
2. Map, filter and reduce
3. Short circuiting methods etc
15:34 - 16:24

15:34 - 16:24

1. Collectors toList, toSet, to Map
2. Sorting ( Comparators)
3. Parallel processing
16:34 - 16:55

16:34 - 16:55

General experience in using the following technologies is expected. Participants can tag along if they don't know all the details, but some topics might get too complex if they are missing the basics:
- Java
- Docker basics
- JUnit 4
- Spring-Boot basics are helpful.
As this is a hands-on workshop, it is essential that you bring a prepared workstation, containing the following software:
- at least JDK 8
- IDE of choice (IntelliJ IDEA recommended)
- Docker CE 19.x
Important: Please prepare the environment & install Docker before the workshop!
We can guarantee that it will work on the following environments:
- Any Linux with native and up to date Docker installation. The user needs Docker permissions.
- macOS with Docker Desktop for Mac
- Windows 10 with Docker Desktop for Windows (WSL2 or Hyper-V backend)

A fancy coffee mug. Tea mugs are also accepted if you are not a caffeine addict yet :)

In this workshop, I would like to show how you can use Testcontainers
( ) – a popular Java testing library that harnesses Docker to easily, reliably, spin up test dependencies.

We will use it with a Spring Boot microservice and test against real PostgreSQL and Redis data stores, we’ll isolate it from other microservices, then start Selenium browsers in Docker and test our application, and all with the same library!

Come and learn why Apache, Spring, ZeroTurnaround, JetBrains, Playtika, Zipkin and others already decided to use Testcontainers for their integration testing needs!

-You will be able to upgrade your Java skills with the latest version which means you are no longer fall behind
You will be able to write clear and concise code with the lambda expression which means less chance to produce bugs
You will be able to write declarative and expressive code easily which means less code but more results
You will learn how to refactor old legacy and imperative code with modern functional programming which means less error in your code
You will be able to process large data set in parallel which means a faster result
You will be able to process large data set in parallel which means a faster result

15 participants ONLY
  • 2020, September 17
  • 14:00 CEST
Geekle Corp.
910 Foulk Road, Suite 201
Wilmington, DE
19803, USA

+1 650 534 2075