@Mock (Mockito) | @MockBean (Spring Boot) | |
|---|---|---|
| Spring context | Không cần | Cần (thay bean trong context) |
| Dùng với | Unit test thuần | Slice test / @SpringBootTest |
| Tốc độ | Nhanh | Chậm hơn (invalidate context cache) |
@Mock — Mockito thuần: chạy với @ExtendWith(MockitoExtension.class), kết hợp @InjectMocks để đưa mock vào object đang test. Không có Spring context → nhanh, dùng cho test service/logic.
@MockBean — thay bean thật trong Spring context bằng mock: dùng trong slice test (@WebMvcTest mock service layer) hoặc @SpringBootTest khi test phụ thuộc Spring wiring.
Quy tắc: không cần Spring context → @Mock; cần thay bean trong context → @MockBean.
Lưu ý version: Spring Boot 3.4+ deprecate @MockBean → thay bằng @MockitoBean (package spring-test), ngữ nghĩa tương đương.