Menü
Avatar von arne anka
  • arne anka

mehr als 1000 Beiträge seit 25.02.2000

spring boot + junit5 suite + DB genau einmal befüllen

Moin,

kurz:

wie baue ich eine JUnit5-Test-Suite, in der
- _eine_ @BeforeAll-Methode ein SQL-Script ausführt, vor allen Tests
- die Bean @LocalServerPort nicht nur in der "Master"-Klasse, sondern in alle Test-Klassen verfügbar ist
?

lang:

ich möchte meine Tests einer Spring-Boot-App in einzelne Klassen aufteilen.
Alle Tests brauchen eine DB, die ich ganz zu Anfang aus einem Script befülle (@DataSource).
Die Tests führen REST-Requests aus zu einem zufälligen Port (@LocalServerPort)

Im Prinzip sollte JUnits Suite genau das Passende zu sein -- nur bekomme ich das Befüllen der DB nicht hin.

Solange ich alles in einer Klasse habe kann ich das in @BeforeAll erledigen und gut ist's.

Teile ich das auf, wird @BeforeAll in der "Master"-Klasse (mit @SelectClasses) gar nicht ausgeführt.
Erzeuge ich eine Klasse für @ExtendWith mit BeforeAllCallback fehlt mir dort aber die @DataSource.

Und schliesslich fehlt mir in den eigentlichen Test-Klassen @LocalServerPort, der nur in der "Master"-Klasse mit @SpringBootTest(webEnvironment = WebEnvironment.RANDOM_PORT) zur Verfügung steht.

Danke

Bewerten
- +
Anzeige