SpringRunner vs SpringBootTest


11

ในการทดสอบหน่วยอะไรคือความแตกต่างระหว่าง@Runwith(SpringRunner.class)& @SpringBootTest?

คุณสามารถอธิบายให้ฉันฟังถึงกรณีการใช้งานของแต่ละคนได้หรือไม่?


1
คุณอ่านเอกสารต่าง ๆ บ้างไหม? ยังไม่มีความชัดเจนอะไร
jonrsharpe

ข้อแตกต่างที่เห็นได้ชัดคือการทดสอบสปริงกับการทดสอบการบู๊ตสปริง แต่เป็นคำถามที่กว้างมาก
user7294900

ฉันจะเข้าใจเมื่อฉันควรใช้ @SpringBootTest นอกเหนือจาก SpringRunner
zouari

คำตอบ:


10

@RunWith (SpringRunner.class):คุณต้องหมายเหตุนี้จะเพียงแค่ช่วยให้บูตฤดูใบไม้ผลิคุณสมบัติเช่น@Autowire, @MockBeanฯลฯ .. ในระหว่างการทดสอบ junit

ถูกใช้เพื่อจัดเตรียมบริดจ์ระหว่างคุณลักษณะการทดสอบ Spring Boot และ JUnit เมื่อใดก็ตามที่เรากำลังใช้คุณสมบัติการทดสอบ Spring Boot ในการทดสอบ JUnit ของเราคำอธิบายประกอบนี้จะต้อง

@SpringBootTest:คำอธิบายประกอบนี้ใช้เพื่อโหลดบริบทแอปพลิเคชันที่สมบูรณ์สำหรับการทดสอบการรวมเข้าด้วยกันแบบครบวงจร

คำอธิบายประกอบ @SpringBootTest สามารถนำมาใช้เมื่อเราต้องการที่จะ bootstrap คอนเทนเนอร์ทั้งหมด คำอธิบายประกอบทำงานได้โดยการสร้าง ApplicationContext ที่จะใช้ในการทดสอบของเรา

นี่คือบทความที่มีตัวอย่างชัดเจนในทั้งสองสถานการณ์Baeldung


1

จากspring.io :

@RunWith(SpringRunner.class)บอกให้ JUnit รันโดยใช้การสนับสนุนการทดสอบของ Spring SpringRunnerเป็นชื่อใหม่สำหรับSpringJUnit4ClassRunnerมันง่ายกว่าเล็กน้อยในสายตา

@SpringBootTestกำลังพูดว่า "bootstrap พร้อมการสนับสนุนของ Spring Boot" (เช่นโหลดapplication.propertiesและมอบคุณความดีให้กับ Spring Boot ทั้งหมด)

ดังนั้นหากคุณไม่ต้องการทุกสิ่งที่ Spring Boot โหลดสำหรับการทดสอบการรวมระบบของคุณคุณอาจไม่จำเป็น @SpringBootTest


0

@RunWith เป็นคำอธิบายประกอบแบบเก่าจาก JUnit 4 เพื่อใช้นักทดสอบ หากคุณใช้ JUnit 5 (จูปิเตอร์) คุณควรใช้ @ExtendWith เพื่อใช้ส่วนขยาย JUnit

ดู https://docs.spring.io/spring-boot/docs/current/reference/html/spring-boot-features.html#boot-features-testing

"ถ้าคุณใช้ JUnit 4 อย่าลืมเพิ่ม @RunWith (SpringRunner.class) ในการทดสอบของคุณมิฉะนั้นคำอธิบายประกอบจะถูกละเว้นหากคุณใช้ JUnit 5 ไม่จำเป็นต้องเพิ่ม @ExtendWith ที่เทียบเท่า ( SpringExtension.class) เป็น @SpringBootTest และอื่น ๆ @ ... คำอธิบายประกอบในการทดสอบจะมีการเพิ่มความคิดเห็นไว้แล้ว

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.