Spring Boot TDD İş Akışı
80%+ kapsam (unit + integration) ile Spring Boot servisleri için TDD rehberi.
Ne Zaman Kullanılır
- Yeni özellikler veya endpoint'ler
- Bug düzeltmeleri veya refactoring'ler
- Veri erişim mantığı veya güvenlik kuralları ekleme
İş Akışı
- Önce testleri yazın (başarısız olmalılar)
- Geçmek için minimal kod uygulayın
- Testleri yeşil tutarken refactor edin
- Kapsamı zorlayın (JaCoCo)
Unit Testler (JUnit 5 + Mockito)
Desenler:
- Arrange-Act-Assert
- Kısmi mock'lardan kaçının; açık stubbing tercih edin
- Varyantlar için
@ParameterizedTestkullanın
Web Katmanı Testleri (MockMvc)
Entegrasyon Testleri (SpringBootTest)
Persistence Testleri (DataJpaTest)
Testcontainers
- Production'ı yansıtmak için Postgres/Redis için yeniden kullanılabilir container'lar kullanın
- JDBC URL'lerini Spring context'e enjekte etmek için
@DynamicPropertySourceile bağlayın
Kapsam (JaCoCo)
Maven snippet:
Assertion'lar
- Okunabilirlik için AssertJ'yi (
assertThat) tercih edin - JSON yanıtları için
jsonPathkullanın - Exception'lar için:
assertThatThrownBy(...)
Test Veri Builder'ları
CI Komutları
- Maven:
mvn -T 4 testveyamvn verify - Gradle:
./gradlew test jacocoTestReport
Unutmayın: Testleri hızlı, izole ve deterministik tutun. Uygulama detaylarını değil, davranışı test edin.


