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 id
erklären und Test ausführen ✅find by id
durch 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 title
erklären und Test ausführen ✅- Öffne BookJpaRepository
- Query anpassen (z.B.
*
durchb
ersetzen) - Test schlägt fehl 💥
- Frage: Was ist eigentlich die Aufgabe eines Repositories?
- Query anpassen (z.B.
- Öffne BookJpaRepository
- GoodBookRepositoryTest
AbstractPostgreSQLTest
stellt die PostgreSQL über Docker bereitfind by id
Test ausführen 💥 Aber der BadBookRepositoryTest schlug nicht fehl!find by id
Implementierung anpassen und Test ausführen ✅find by title
Test 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 book
erklä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?
dtoToDomainMapperMock
durch 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 book
erklä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