Codebeispiele für meinen Vortrag Das untere Ende der Testpyramide
- Java 21
- Maven >= 3.9.x
- Docker >= 3.0
- BookRepository
- Erklären
- BadBookRepositoryTest
- Kein IT → keine Abhängigkeiten → nur mocking ist erlaubt
find by iderklären und Test ausführen ✅find by iddurch Alternative ersetzen= bookJpaRepository.getReferenceById(id)- Test schlägt fehl 💥
- Verstoß gegen Unit-Test sollen Refactoringsicher sein
- Beispiel für Das passiert bei Whitebox-Testing
find by titleerklären und Test ausführen ✅- Öffne BookJpaRepository
- Query anpassen (z.B.
*durchbersetzen) - Test schlägt fehl 💥
- Frage: Was ist eigentlich die Aufgabe eines Repositories?
- Query anpassen (z.B.
- Öffne BookJpaRepository
- GoodBookRepositoryTest
AbstractPostgreSQLTeststellt die PostgreSQL über Docker bereitfind by idTest ausführen 💥 Aber der BadBookRepositoryTest schlug nicht fehl!find by idImplementierung anpassen und Test ausführen ✅find by titleTest ausführen ✅- Query in BookJpaRepository anpassen und Test ausführen 💥
- Datenbanktests können schnell sein
- Datenbanktests sind kurz und übersichtlich
- Datenbanktests testen die Wirklichkeit
- Frage: Was wäre mit H2?
- BookRestController
- Erklären (siehe auch Mapper)
- BadBookRestControllerTest
- Kein IT → keine Abhängigkeiten → nur mocking ist erlaubt
store new bookerklären und Test ausführen ✅- Hinweis: Mocking für Mapper sieht genauso aus, wie der Mapper selbst
- Frage: Wie sieht es mit der Lesbarkeit aus?
dtoToDomainMapperMockdurch echte Implementierung ersetzen- Test ausführen ✅
- weniger Whitebox-Testing
- bessere Lesbarkeit
- Frage: Warum ist es kein Unit-Test mehr?
- Ändere Pattern in
BookDto(BookRestController) zuyyyy-MM-dd- Test schlägt fehl 💥
- GoodBookRestControllerTest
store new bookerklären und Test ausführen ✅- Spring Boot Slice Test
- Aufgabe des Controllers ist Mapping und Übergabe an nächste Schicht
- Wie JSON zu Domain gemapped wird ist eigentlich™️ egal