การทดสอบ Spring Boot
การทดสอบ Spring Boot: @SpringBootTest, @WebMvcTest, @DataJpaTest, MockMvc, TestRestTemplate, test slice
1ควรใช้ annotation ใดเพื่อโหลด context แบบเต็มของ Spring Boot สำหรับ integration test?
ควรใช้ annotation ใดเพื่อโหลด context แบบเต็มของ Spring Boot สำหรับ integration test?
คำตอบ
@SpringBootTest โหลด context ทั้งหมดของแอปพลิเคชัน รวมถึง bean และ auto-configuration ทั้งหมด annotation นี้ใช้สำหรับ integration test ที่ต้องการทั้งแอปพลิเคชัน @WebMvcTest และ @DataJpaTest โหลดเพียงบางส่วนของ context (test slicing) ในขณะที่ @ContextConfiguration เป็น annotation ระดับต่ำกว่าสำหรับการกำหนดค่า context ด้วยตนเอง (ซับซ้อนกว่า)
2Test slicing ใน Spring Boot คืออะไร?
Test slicing ใน Spring Boot คืออะไร?
คำตอบ
Test slicing หมายถึงการโหลดเฉพาะบางส่วนของ Spring context เพื่อเร่งความเร็วในการทดสอบ ตัวอย่างเช่น @WebMvcTest โหลดเฉพาะ web component (controller, filter) ในขณะที่ @DataJpaTest โหลดเฉพาะ JPA repository วิธีนี้ช่วยลดเวลาเริ่มต้นและเพิ่มประสิทธิภาพการทดสอบโดยหลีกเลี่ยงการโหลด bean ที่ไม่จำเป็น
3ควรใช้ annotation ใดเพื่อทดสอบเฉพาะ controller ของ Spring MVC?
ควรใช้ annotation ใดเพื่อทดสอบเฉพาะ controller ของ Spring MVC?
คำตอบ
@WebMvcTest ออกแบบมาโดยเฉพาะสำหรับการทดสอบ controller ของ Spring MVC annotation นี้โหลดเฉพาะ web component (controller, @ControllerAdvice, filter, interceptor) และกำหนดค่า MockMvc โดยอัตโนมัติ @SpringBootTest จะโหลด context ทั้งหมด (ไม่จำเป็นสำหรับการทดสอบ controller เดียว) @DataJpaTest ใช้สำหรับ repository และ @RestClientTest ใช้สำหรับทดสอบ HTTP client (RestTemplate, WebClient)
annotation @MockBean ใน Spring Boot Test มีไว้เพื่ออะไร?
ควรใช้อ็อบเจ็กต์ใดเพื่อจำลองคำขอ HTTP ในการทดสอบด้วย @WebMvcTest?
+27 คำถามสัมภาษณ์
หัวข้อสัมภาษณ์ Spring Boot อื่นๆ
Spring Core - IoC & DI
Spring Boot Auto-Configuration
Spring Boot Starters
Application Properties & YAML
การทำ Logging ด้วย SLF4J และ Logback
Spring Boot DevTools
Spring MVC Basics
Spring REST Controllers
Request & Response Handling
การจัดการข้อยกเว้น
Bean Validation
พื้นฐาน Spring Data JPA
เอนทิตี JPA และความสัมพันธ์
การสืบค้น JPA
Spring Data Repositories
พื้นฐาน Spring Security
Spring Boot Actuator
การทดสอบหน่วยด้วย JUnit และ Mockito
Profiles และ Environment
RestTemplate และ WebClient
Async และ Scheduling
Caching ด้วย Spring
Spring WebFlux (Reactive)
ทรานแซกชัน Spring
การยืนยันตัวตนและการให้สิทธิ์ขั้นสูง
JWT และความปลอดภัยแบบ Stateless
OAuth2 และ Authorization Server
Spring Boot และ Docker
Microservices ด้วย Spring
Spring Cloud Config
การเพิ่มประสิทธิภาพการทำงาน
GraalVM Native Images
เชี่ยวชาญ Spring Boot สำหรับการสัมภาษณ์ครั้งถัดไป
เข้าถึงคำถามทั้งหมด flashcards แบบทดสอบเทคนิค แบบฝึกหัด code review และตัวจำลองสัมภาษณ์
เริ่มใช้ฟรี