dapr / dapr/java-sdk

Migrate integration tests from process based approach to Testcontainers

Open
#1,295 3 comments 1 reaction 0 assignees View on GitHub
Dominant language
Java
Stars
300
Forks
230
Avg merge
1d 20h
Merged PRs (30d)
4

Description

## Describe the proposal
Historically `Dapr Java SDK` used a process based approach for running integration tests. This consisted of the following pieces:
- `JUnite Runner` - this would start the IT
- `Maven Exec Plugin `- this would actually start the `Dapr` sidecar
- Application under test - this is usually either a stub based on `WireMock` or a `Spring Boot` application

`Java` and the `JVM` ecosystem was and it still is very bad at process management. The `ProcessBuilder` API is horrendous and to make it properly work it requires a lot of boilerplate and baby sitting. For a quick glimpse you can check `DaprRun` and `Command` classes that deal with `ProcessBuilder`.

More than a half a year ago @salaboy started working on bringing `Testcontainers` support to `Dapr Java SDK`. The `Testcontainers` are currently used quite successfully for testing the newly added `Spring Boot` integration.

The proposal is to slowly migrate IT tests from the process based mechanism that relies on `DaprRun` and `Maven Exec` to `Testcontainers` based approach.

`Tescontainers` has all the necessary tools and hooks to make sure that the resources are properly cleaned up, also since Dapr is itself a sidecar `Testcontainers` and its container focus is natural fit for these types of integration tests.

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.