Migrate integration tests from process based approach to Testcontainers
- Vorherrschende Sprache
- Java
- Sterne
- 300
- Forks
- 230
- Ø Merge
- 5 T. 1 Std.
- Gemergte PRs (30 T.)
- 5
Beschreibung
## 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.
Beitragsleitfaden
Rechercherichtung
Lies zunächst die Klassen DaprRun und Command, untersuche dann die Konfiguration des Maven Exec Plugin und die bestehenden Spring Boot-Integrationstests, die bereits Testcontainers verwenden. Ermittle, welche Integrationstests noch den prozessbasierten Ansatz verwenden, und migriere sie schrittweise; abgeschlossen ist die Aufgabe, wenn die migrierten Tests mit Testcontainers ausgeführt werden und ihre Ressourcen zuverlässig aufräumen.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Bewertung
- Tech-Stack
- java
- Bereich
- devops, testing
- Issue-Typ
- Refactoring
- Schwierigkeit
- 4/5
- Geschätzter Aufwand
- 3-5 Tage
- Aktivitätsstatus
- Veraltet
- Klarheit
- Größtenteils klar
- Anfängerfreundlichkeit
- 35/100