SpringRunner vs SpringBootTest


11

Trong bài kiểm tra đơn vị, sự khác biệt giữa @Runwith(SpringRunner.class)& là @SpringBootTestgì?

Bạn có thể giải thích cho tôi các trường hợp sử dụng của từng người?


1
Bạn đã đọc bất kỳ tài liệu khác nhau? Điều gì vẫn chưa rõ ràng?
jonrsharpe

Sự khác biệt rõ ràng là thử nghiệm khởi động mùa xuân so với thử nghiệm khởi động mùa xuân, nhưng đó là câu hỏi rất rộng
user7294900

Tôi sẽ hiểu khi nào tôi nên sử dụng @SpringBootTest ngoài SpringRunner.
zouari

Câu trả lời:


10

@RunWith (SpringRunner. Class): Bạn cần chú thích này để chỉ bật các tính năng khởi động mùa xuân như @Autowire, @MockBeanv.v. trong quá trình thử nghiệm Junit

được sử dụng để cung cấp cầu nối giữa các tính năng kiểm tra Spring Boot và JUnit. Bất cứ khi nào chúng tôi đang sử dụng bất kỳ tính năng kiểm tra Spring Boot nào trong các thử nghiệm JUnit của mình, chú thích này sẽ được yêu cầu.

@SpringBootTest: Chú thích này được sử dụng để tải ngữ cảnh ứng dụng hoàn chỉnh để kiểm tra tích hợp từ đầu đến cuối

Chú thích @SpringBootTest có thể được sử dụng khi chúng ta cần bootstrap toàn bộ container. Chú thích hoạt động bằng cách tạo ApplicationContext sẽ được sử dụng trong các thử nghiệm của chúng tôi.

Dưới đây là bài viết với các ví dụ rõ ràng về cả hai kịch bản Baeldung


1

Từ mùa xuân.io :

@RunWith(SpringRunner.class)nói với JUnit để chạy bằng hỗ trợ thử nghiệm của Spring. SpringRunnerlà tên mới cho SpringJUnit4ClassRunner, nó dễ nhìn hơn một chút.

@SpringBootTestđang nói rằng bootstrap với sự hỗ trợ của Spring Boot (ví dụ tải application.propertiesvà cung cấp cho tôi tất cả sự tốt lành của Spring Boot)

Vì vậy, nếu bạn không cần mọi thứ mà Spring Boot tải cho bài kiểm tra tích hợp của mình, bạn có thể không cần @SpringBootTest


0

@RunWith là một chú thích cũ từ JUnit 4 để sử dụng các bài kiểm tra. Nếu bạn đang sử dụng JUnit 5 (Jupiter), bạn nên sử dụng @ExtendWith để sử dụng các tiện ích mở rộng JUnit

Xem https://docs.spring.io/spring-boot/docs/civerse/reference/html/spring-boot-features.html#boot-features-testing

"Nếu bạn đang sử dụng JUnit 4, đừng quên thêm @RunWith (SpringRunner. Class) vào thử nghiệm của mình, nếu không các chú thích sẽ bị bỏ qua. Nếu bạn đang sử dụng JUnit 5, không cần thêm @ExtendWith (tương đương) SpringExtension. Class) là @SpringBootTest và các chú thích @ Thử khác đã được chú thích với nó.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.