refactor(backend): Paketwurzel de.werkbaum, Tests auf RestTestClient

Das Backend-Geruest kam unter der Platzhalter-Wurzel com.example.editor
herein und widersprach backend/CLAUDE.md. Umgezogen nach de.werkbaum: 17
Kotlin-Dateien, Gradle-group, apiPackage/modelPackage der OpenAPI-Generierung,
die jacoco-Ausschluesse und das Cucumber-glue-Paket. Jetzt war es billig, mit
jeder Woche Entwicklung waere es teurer geworden.

Die BDD-Tests nutzen jetzt RestTestClient statt TestRestTemplate, das in
Spring Boot 4 als Auslaufmodell gilt. Weil Cucumber Senden und Pruefen
trennt, wird die fluent API nicht fuer Zusicherungen genutzt, sondern ueber
returnResult das Ergebnis festgehalten.

Nachgemessen: 22 Tests gruen, check inklusive Coverage-Verifikation besteht,
91,7 % Zeilenabdeckung, generierter Code weiterhin ausgeschlossen.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
mhoennig
2026-08-26 15:21:34 +02:00
co-authored by Claude Opus 5
parent 7684872a42
commit f3afc8dfa8
24 changed files with 286 additions and 241 deletions
+7 -8
View File
@@ -8,7 +8,7 @@ plugins {
jacoco
}
group = "com.example"
group = "de.werkbaum"
version = "0.1.0-SNAPSHOT"
java {
@@ -37,10 +37,9 @@ dependencies {
// --- Tests ---
testImplementation("org.springframework.boot:spring-boot-starter-test")
// TestRestTemplate liegt in Boot 4 im eigenen Modul (org.springframework.boot.resttestclient)
// und braucht spring-boot-restclient zur Laufzeit
// RestTestClient-Autokonfiguration (Boot 4). TestRestTemplate gilt dort als
// Auslaufmodell; die BDD-Tests nutzen den Nachfolger aus spring-test.
testImplementation("org.springframework.boot:spring-boot-resttestclient")
testRuntimeOnly("org.springframework.boot:spring-boot-restclient")
testImplementation("io.mockk:mockk:$mockkVersion")
// Behavior-Tests (BDD) mit Cucumber
@@ -57,8 +56,8 @@ openApiGenerate {
generatorName.set("kotlin-spring")
inputSpec.set("$projectDir/src/main/resources/openapi/api.yaml")
outputDir.set(layout.buildDirectory.dir("generated/openapi").get().asFile.path)
apiPackage.set("com.example.editor.generated.api")
modelPackage.set("com.example.editor.generated.model")
apiPackage.set("de.werkbaum.generated.api")
modelPackage.set("de.werkbaum.generated.model")
configOptions.set(
mapOf(
"useSpringBoot4" to "true",
@@ -106,7 +105,7 @@ tasks.jacocoTestReport {
// Generierter Code zaehlt nicht zur Coverage
classDirectories.setFrom(
classDirectories.files.map {
fileTree(it) { exclude("com/example/editor/generated/**") }
fileTree(it) { exclude("de/werkbaum/generated/**") }
}
)
}
@@ -115,7 +114,7 @@ tasks.jacocoTestCoverageVerification {
dependsOn(tasks.test)
classDirectories.setFrom(
classDirectories.files.map {
fileTree(it) { exclude("com/example/editor/generated/**") }
fileTree(it) { exclude("de/werkbaum/generated/**") }
}
)
violationRules {