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)
@ExtendWith(MockitoExtension.class)
class MarketServiceTest {
@Mock MarketRepository repo;
@InjectMocks MarketService service;
@Test
void createsMarket() {
CreateMarketRequest req = new CreateMarketRequest("name", "desc", Instant.now(), List.of("cat"));
when(repo.save(any())).thenAnswer(inv -> inv.getArgument(0));
Market result = service.create(req);
assertThat(result.name()).isEqualTo("name");
verify(repo).save(any());
}
}
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)
@WebMvcTest(MarketController.class)
class MarketControllerTest {
@Autowired MockMv…