Das Projekt simuliert eine Backend-Anwendung zur Verwaltung eines Buchkatalogs. Diese Anwendung hat bewusst so gut wie keine Testabdeckung, um als Grundlage für den Workshop zu dienen.
Kontext:
- Verwaltung von Büchern und Buchreihen
- REST-API für zentrale Buchabfrage, Filterung, Hinzufügen/Löschen
- Direkter Datenbankzugriff (H2 In-Memory)
book-catalog/
└── src/
├── main/
│ ├── java/
│ │ └── com/example/
│ │ ├── controller/
│ │ │ ├── BookController.java // REST-Endpunkte für Bücher (CRUD, Listen, Suchen)
│ │ │ └── SeriesController.java // REST-Endpunkte für Buchreihen (CRUD, Listen)
│ │ ├── dto/
│ │ │ ├── BookDTO.java // Daten-Transfer-Objekt für Buchdaten (zur Kommunikation über die API)
│ │ │ └── SeriesDTO.java // Daten-Transfer-Objekt für Buchreihen (zur Kommunikation über die API)
│ │ ├── model/
│ │ │ ├── Book.java // Domänenmodell/Entity für ein Buch
│ │ │ └── Series.java // Domänenmodell/Entity für eine Buchreihe
│ │ ├── repository/
│ │ │ ├── BookRepository.java // Datenbankzugriff für Bücher (CRUD Operationen)
│ │ │ └── SeriesRepository.java // Datenbankzugriff für Buchreihen (CRUD Operationen)
│ │ ├── service/
│ │ │ ├── BookService.java // Geschäftslogik für Bücher (z.B. Validierungen)
│ │ │ ├── PriceCalculator.java // Hilfsklasse für Preisberechnung von Büchern/Buchreihen
│ │ │ └── SeriesService.java // Geschäftslogik für Buchreihen (z.B. Zusammenstellung von Serien)
│ │ ├── AppConfig.java // Grundkonfiguration für die Spring-Anwendung
│ │ └── BookCatalogApplication.java // Startpunkt der Anwendung (Spring Boot Application)
│ └── resources/
│ ├── application.properties // Zentrale Konfiguration der Anwendung (z.B. Port, DB-Zugang)
│ ├── data.sql // Initiale Testdaten für die Datenbank
│ └── schema.sql // Datenbankschema (Tabellenstruktur)
└── test/
└── java/
└── com/example/
// (Beispielhafte Tests vorhanden, jedoch lückenhaft und verbesserungsfähig)
- Testlücken erkennen: Analysiere gemeinsam mit Github Copilot, an welchen Stellen im Projekt Tests fehlen, oberflächlich oder fehlerhaft sind.
- Tests verbessern: Entwickle robuste, aussagekräftige und wartbare Unittests. Nutze dafür die Unterstützung von Copilot zur Testgenerierung, -erweiterung und Reorganisation.
- Testabdeckung steigern: Verwende Tools zur Testabdeckungsanalyse, um Verbesserungen sichtbar und messbar zu machen.
Github Codespace kann wie im Screenshot gezeigt geöffnet werden:

- Schrittweise vorgehen: Starte mit dem Testen einzelner Methoden, bevor du ganze Komponenten angehst.
- Kontext bereitstellen: Beschreibe, was die Methode/Klasse tut und welche Randbedingungen zu testen sind.
- Nach Testideen fragen: "
Welche kritischen Testfälle sollte ich für BookService.java abdecken?" - Teste auch Fehlerfälle: Lass KI Szenarien vorschlagen, bei denen bewusste Fehler auftreten sollten.
- Achte darauf dass Github Copilot verständlich arbeitet: z.B. Testmethoden sinnvoll benennt.
- Fasse abgedeckte und nicht abgedeckte Stellen zusammen: Lass dir auflisten, wo noch Tests fehlen könnten.
- Teste den Github Copilot Befehl: \tests
Experimentiere gerne frei mit Prompts, um gezielt Testfälle zu generieren oder bestehende Tests zu überarbeiten. Alternativ kannst du die Vorschläge und Prompts in hilfestellung nutzen.
Viel Erfolg beim Testen!