Thẻ

#testing

99 Ngày Spring — Ngày 60: Tổng kết chiến lược test

Một chiến lược test cho service thật: mỗi lớp một câu hỏi và tỉ lệ 300 unit, 40 slice, 8 hành trình; fake có hành vi và WireMock ở biên giới; Surefire/Failsafe, Awaitility, Clock và chính sách test chập chờn — cùng checklist 12 câu để review test.

25 thg 9, 202611 phút8
99 Ngày Spring — Ngày 59: Coverage & chất lượng

JaCoCo ba bước với check làm đỏ build và ngưỡng theo package nghiệp vụ, line khác branch, coverage không đo được assert và PITest chỉ thẳng vào test còn thiếu, kim tự tháp test chạy bằng Surefire và Failsafe — cùng bốn con số đáng theo dõi và những con số nên bỏ.

24 thg 9, 202611 phút9
99 Ngày Spring — Ngày 57: Test data & fixtures

Builder với mặc định hợp lệ để test chỉ nói điều nó quan tâm, @TestComponent gói builder với repository, @Sql cho dữ liệu nhiều hay legacy với bẫy method ghi đè class, ba bẫy script SQL — và chiến lược dọn dẹp: rollback, TRUNCATE trước mỗi test, dữ liệu duy nhất, còn @DirtiesContext thì không.

22 thg 9, 202612 phút1
99 Ngày Spring — Ngày 56: Mock bean & test security

@MockitoBean chỉ cho thứ ngoài biên giới và mỗi bộ mock khác nhau là một context mới, @WithMockUser với bẫy roles và authorities, jwt() test luật phân quyền mà không cần token thật — và kim tự tháp test cho security.

21 thg 9, 202611 phút3
99 Ngày Spring — Ngày 55: Testcontainers

Phụ thuộc thật trong Docker thay vì thứ gần giống, @ServiceConnection biến sáu dòng cấu hình thành một annotation, một container cho cả bộ test — và bức tranh khép lại năm ngày kiểm thử.

20 thg 9, 20268 phút10
99 Ngày Spring — Ngày 54: @SpringBootTest

Khi nào test tích hợp mới xứng đáng, vì sao RANDOM_PORT là lựa chọn đúng, cache context quyết định bộ test chạy hai phút hay bốn mươi phút — và vì sao @WithMockUser hoàn toàn vô nghĩa ở đây.

19 thg 9, 20268 phút6
99 Ngày Spring — Ngày 53: @DataJpaTest

Mỗi test là một transaction bị rollback, flush và clear quyết định test có chứng minh được gì không, vì sao "xanh trên H2 chết trên production" làm cả đội mất niềm tin — và Testcontainers với @ServiceConnection.

18 thg 9, 20268 phút6
99 Ngày Spring — Ngày 52: @WebMvcTest & MockMvc

Slice test nạp đúng tầng web nên mọi service phải khai @MockitoBean, MockMvc gọi thẳng DispatcherServlet không cần server, đây là nơi duy nhất chứng minh @Valid và @ControllerAdvice thật sự chạy — cùng cái bẫy 401 khiến nhiều người bỏ cuộc.

17 thg 9, 20267 phút7
99 Ngày Spring — Ngày 51: Unit test tầng service

Service là class Java bình thường nên test nó không cần Spring — vài mili-giây thay vì vài giây; Mockito với Mock và InjectMocks, verifyNoInteractions khẳng định điều không xảy ra, và bốn cái bẫy tạo ra test luôn xanh mà vô dụng.

16 thg 9, 20267 phút7