ในการทดสอบหน่วยอะไรคือความแตกต่างระหว่าง@Runwith(SpringRunner.class)
& @SpringBootTest
?
คุณสามารถอธิบายให้ฉันฟังถึงกรณีการใช้งานของแต่ละคนได้หรือไม่?
ในการทดสอบหน่วยอะไรคือความแตกต่างระหว่าง@Runwith(SpringRunner.class)
& @SpringBootTest
?
คุณสามารถอธิบายให้ฉันฟังถึงกรณีการใช้งานของแต่ละคนได้หรือไม่?
คำตอบ:
@RunWith (SpringRunner.class):คุณต้องหมายเหตุนี้จะเพียงแค่ช่วยให้บูตฤดูใบไม้ผลิคุณสมบัติเช่น@Autowire
, @MockBean
ฯลฯ .. ในระหว่างการทดสอบ junit
ถูกใช้เพื่อจัดเตรียมบริดจ์ระหว่างคุณลักษณะการทดสอบ Spring Boot และ JUnit เมื่อใดก็ตามที่เรากำลังใช้คุณสมบัติการทดสอบ Spring Boot ในการทดสอบ JUnit ของเราคำอธิบายประกอบนี้จะต้อง
@SpringBootTest:คำอธิบายประกอบนี้ใช้เพื่อโหลดบริบทแอปพลิเคชันที่สมบูรณ์สำหรับการทดสอบการรวมเข้าด้วยกันแบบครบวงจร
คำอธิบายประกอบ @SpringBootTest สามารถนำมาใช้เมื่อเราต้องการที่จะ bootstrap คอนเทนเนอร์ทั้งหมด คำอธิบายประกอบทำงานได้โดยการสร้าง ApplicationContext ที่จะใช้ในการทดสอบของเรา
นี่คือบทความที่มีตัวอย่างชัดเจนในทั้งสองสถานการณ์Baeldung
จากspring.io :
@RunWith(SpringRunner.class)
บอกให้ JUnit รันโดยใช้การสนับสนุนการทดสอบของ SpringSpringRunner
เป็นชื่อใหม่สำหรับSpringJUnit4ClassRunner
มันง่ายกว่าเล็กน้อยในสายตา
@SpringBootTest
กำลังพูดว่า "bootstrap พร้อมการสนับสนุนของ Spring Boot" (เช่นโหลดapplication.properties
และมอบคุณความดีให้กับ Spring Boot ทั้งหมด)
ดังนั้นหากคุณไม่ต้องการทุกสิ่งที่ Spring Boot โหลดสำหรับการทดสอบการรวมระบบของคุณคุณอาจไม่จำเป็น @SpringBootTest
@RunWith เป็นคำอธิบายประกอบแบบเก่าจาก JUnit 4 เพื่อใช้นักทดสอบ หากคุณใช้ JUnit 5 (จูปิเตอร์) คุณควรใช้ @ExtendWith เพื่อใช้ส่วนขยาย JUnit
"ถ้าคุณใช้ JUnit 4 อย่าลืมเพิ่ม @RunWith (SpringRunner.class) ในการทดสอบของคุณมิฉะนั้นคำอธิบายประกอบจะถูกละเว้นหากคุณใช้ JUnit 5 ไม่จำเป็นต้องเพิ่ม @ExtendWith ที่เทียบเท่า ( SpringExtension.class) เป็น @SpringBootTest และอื่น ๆ @ ... คำอธิบายประกอบในการทดสอบจะมีการเพิ่มความคิดเห็นไว้แล้ว