Trong bài kiểm tra đơn vị, sự khác biệt giữa @Runwith(SpringRunner.class)
& là @SpringBootTest
gì?
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?
Trong bài kiểm tra đơn vị, sự khác biệt giữa @Runwith(SpringRunner.class)
& là @SpringBootTest
gì?
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?
Câu trả lời:
@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
, @MockBean
v.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
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.SpringRunner
là tên mới choSpringJUnit4ClassRunner
, 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ảiapplication.properties
và 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
@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
"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ó.