/unit-testing-best-bad-practices

Codebeispiele für meinen Vortrag "Das untere Ende der Testpyramide"

Primary LanguageKotlinApache License 2.0Apache-2.0

unit-testing-best-bad-practices

CI with Maven License

Codebeispiele für meinen Vortrag Das untere Ende der Testpyramide

Zur Ausführung wird benötigt

  • Java 21
  • Maven >= 3.9.x
  • Docker >= 3.0

Beispiel für Mocking ist 💩 und Whitebox-Testing ist 💥

  1. BookRepository
    1. Erklären
  2. BadBookRepositoryTest
    1. Kein IT → keine Abhängigkeitennur mocking ist erlaubt
    2. find by id erklären und Test ausführen ✅
      1. 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
    3. find by title erklären und Test ausführen ✅
      1. Öffne BookJpaRepository
        1. Query anpassen (z.B. * durch b ersetzen)
        2. Test schlägt fehl 💥
        3. Frage: Was ist eigentlich die Aufgabe eines Repositories?
  3. GoodBookRepositoryTest
    1. AbstractPostgreSQLTest stellt die PostgreSQL über Docker bereit
    2. find by id Test ausführen ✅
    3. find by id Implementierung anpassen und Test ausführen ✅
    4. find by titleTest ausführen ✅
    5. Query in BookJpaRepository anpassen und Test ausführen 💥

Zusammenfassung

  • Datenbanktests können schnell sein
  • Datenbanktests sind kurz und übersichtlich
  • Datenbanktests testen die Wirklichkeit
  • Frage: Was wäre mit H2?

Beispiel für Testet eure Frameworks

  1. BookRestController
    1. Erklären (siehe auch Mapper)
  2. BadBookRestControllerTest
    1. Kein IT → keine Abhängigkeitennur mocking ist erlaubt
    2. store new book erklären und Test ausführen ✅
      1. Hinweis: Mocking für Mapper sieht genauso aus, wie der Mapper selbst
      2. Frage: Wie sieht es mit der Lesbarkeit aus?
    3. dtoToDomainMapperMock durch echte Implementierung ersetzen
      1. Test ausführen ✅
      2. weniger Whitebox-Testing
      3. bessere Lesbarkeit
      4. Frage: Warum ist es kein Unit-Test mehr?
    4. Ändere Pattern in BookDto (BookRestController) zu yyyy-MM-dd
      1. Test schlägt fehl 💥
  3. GoodBookRestControllerTest
    1. store new book erklären und Test ausführen ✅
      1. Spring Boot Slice Test

Zusammenfassung

  • Aufgabe des Controllers ist Mapping und Übergabe an nächste Schicht
  • Wie JSON zu Domain gemapped wird ist eigentlich™️ egal