ในการทดสอบหน่วยอะไรคือความแตกต่างระหว่าง@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 และอื่น ๆ @ ... คำอธิบายประกอบในการทดสอบจะมีการเพิ่มความคิดเห็นไว้แล้ว