Migrate integration tests from process based approach to Testcontainers
- 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
Assessment
This issue has not been assessed yet.