# Testing Strategy Instructions Aktualisiert: 2025-10-20 ## Ziele Testabdeckung für kritische Pfade: CRUD, Clone, Fragebogen Zuordnung, Fake-ID Mechanismus. ## Testarten 1. Unit Tests (reine Logik, z.B. createFakeID, Klon Copy-Konstruktoren). 2. Integration Tests (Persistence + Manager Methoden gegen Test-DB). Möglich mit in-memory H2 + angepasster persistence.xml. 3. UI/Controller Smoke Tests (Optional, z.B. mit Selenium/Arquillian Graphene). ## Prioritäten - AbstractManager.save / saveAll Edge Cases. - remove / removeAllIn (Null, nicht persistierte Entities). - createFakeID Sequenz (-1, -2, -3 ...). - Fragebogen Add/Remove Workflow (Wrapper Persistenz, Filterliste). - Klonen tiefer Objektgraph. ## Beispiel Unit Test Fälle - createFakeID(null) => -1. - createFakeID(leere Liste) => -1. - createFakeID([id=-1]) => -2. - createFakeID([id=-3, id=-1]) => -4. ## Integration Tests (CRUD) - Persist neue Entity -> ID != null. - Merge vorhandene Entity -> unverändert Fachfelder korrekt übernommen. - saveAll mit gemischten (neue + vorhandene) -> alle persistent. ## Fehlerpfade - save(null) -> false. - remove(null) -> false. - remove(entity ohne ID) -> false. ## Klon Tests - Quelle & Klon dürfen nicht gleiche ID haben. - Child Collections tief kopiert (Referenzen ungleich, Werte gleich). ## Tooling Vorschlag - JUnit 5, Mockito für isolierte Tests von Controller-Hilfsmethoden. - Testcontainers (Optional später) für realistischere DB. ## Generator Leitplanken - Für neue Fachlogik minimal 1-2 Unit Tests + 1 Integration Test. - Keine Abhängigkeit auf Produktionspfade in Unit Tests; Test-spezifische Testdaten-Builder. ---