Zestawy rozmówBlog

Twoja wymarzona praca? Lets Git IT.
Interaktywna platforma przygotowująca do rozmów technicznych dla nowoczesnych programistów.

XGitHub

Platforma

  • Kategorie

Zasoby

  • Blog
  • O aplikacji
  • FAQ
  • Sugestie

Prawne

  • Polityka prywatności
  • Regulamin

© 2026 LetsGit.IT. Wszelkie prawa zastrzeżone.

LetsGit.IT/Kategorie/Spring
Springhard

`@WebMvcTest` vs `@SpringBootTest` — kiedy czego użyć?

Tagi
#testing#webmvctest#springboottest
Wróć do kategoriiPrzejdź do quizu

Odpowiedź

`@WebMvcTest` to test typu slice: ładuje warstwę MVC (kontrolery itd.) i jest szybki, zwykle z mockami zależności. `@SpringBootTest` ładuje cały kontekst aplikacji i nadaje się do integracji, ale jest wolniejszy.

Odpowiedź zaawansowana

Głębiej

Te adnotacje to kompromis realizm ↔ szybkość.

`@WebMvcTest`

  • Ładuje **wycinek** kontekstu: infrastrukturę MVC + wybrany kontroler/ kontrolery.
  • Dobre do testowania routingu, walidacji, serializacji, kodów odpowiedzi i mapowania błędów.
  • Zwykle używa `MockMvc` i mockuje zależności serwisów (`@MockBean`).

`@SpringBootTest`

  • Uruchamia **pełny** kontekst aplikacji.
  • Dobre do testów integracyjnych przez warstwy (security, persystencja, messaging).
  • Często łączy się z Testcontainers, żeby uruchomić realne zależności.

Praktyka

  • `@WebMvcTest` dla testów kontrolerów.
  • `@SpringBootTest` dla scenariuszy integracyjnych end-to-end.
  • Rozważ też inne slice’y: `@DataJpaTest`, `@JsonTest`, `@WebFluxTest`.

Typowe pułapki

  • `@SpringBootTest` wszędzie (wolne testy, większa kruchość).
  • Zbyt dużo mocków w `@WebMvcTest` i brak realnych problemów serializacji/security.
  • Brak importu/konfiguracji security w slice testach (albo wyłączenie filtrów i utrata pokrycia).

Powiązane pytania

Testowanie
Czym jest property-based testing i kiedy go używasz?
#property-based#invariants#testing
DevOps
Opisz typowe etapy pipeline’u CI i częste punkty awarii.
#ci#pipeline#build
Monolity
Jak zapobiegać regresjom wydajności w dużym monolicie?
#monolith
#performance
#observability
Monolity
Jak podejść do testów integracyjnych w monolicie, żeby nie zabić CI?
#testing#monolith#ci
Mikroserwisy
Consumer-driven contract tests: co to jest i po co się je stosuje?
#microservices#testing#contracts
Monolity
Jak refaktorować bałagan w monolicie bez zatrzymania rozwoju funkcji?
#refactoring#incremental#testing