Tìm hiểu @SpringBootTest trong Spring Boot
NỘI DUNG BÀI VIẾT
Tìm hiểu về chú thích @SpringBootTest do Spring Boot cung cấp để kích hoạt các tính năng khởi động cụ thể trong các bài kiểm tra ứng dụng trong quá trình kiểm tra đơn vị hoặc kiểm tra tích hợp.
1. @SpringBootTest
Chúng ta có thể chỉ định chú thích @SpringBootTest trên một lớp thử nghiệm chạy các bài kiểm tra dựa trên Spring Boot. Khai báo lớp của nó như sau:
SpringBootTest.java:
@Target(value=TYPE)
@Retention(value=RUNTIME)
@Documented
@Inherited
@BootstrapWith(value=SpringBootTestContextBootstrapper.class)
@ExtendWith(value=org.springframework.test.context.junit.jupiter.SpringExtension.class)
public @interface SpringBootTest
{
//
}
Code language: JavaScript (javascript)
Nó cung cấp các tính năng sau hơn và cao hơn Spring TestContext thông thường được cung cấp bởi chú thích @ContextConfiguration(classes=…) trong Spring-test.
- Tự động tìm kiếm @SpringBootConfiguration khi class @Configuration lồng nhau không được sử dụng và không có lớp rõ ràng nào được chỉ định.
- Cho phép các thuộc tính môi trường tùy chỉnh được xác định bằng cách sử dụng thuộc tính thuộc tính.
- Cung cấp hỗ trợ cho các chế độ WebEn environment khác nhau, bao gồm khả năng khởi động một máy chủ web đang chạy hoàn toàn đang lắng nghe trên một cổng xác định hoặc ngẫu nhiên.
- Đăng ký một bean TestRestTemplate và / hoặc WebTestClient để sử dụng trong các bài kiểm tra web đang sử dụng một máy chủ web đang chạy hoàn chỉnh.
2. Sử dụng @SpringBootTest để kiểm tra tích hợp
Under the hood, @SpringBootTest cố gắng bắt chước các quy trình được bổ sung bởi Spring Boot framework để tạo context, ví dụ: nó quyết định những gì cần quét dựa trên cấu trúc package, tải các cấu hình bên ngoài từ các vị trí được xác định trước, tùy chọn chạy trình khởi động cấu hình tự động, v.v.
Như chúng ta thấy rằng chú thích này khởi động và định cấu hình gần như toàn bộ ứng dụng trước khi bắt đầu kiểm tra, chúng ta nên sử dụng @SpringBootTest để viết kiểm tra tích hợp sử dụng các quy trình và phụ thuộc ứng dụng.
@SpringBootTest(webEnvironment=WebEnvironment.RANDOM_PORT)
public class SpringBootDemoApplicationTests
{
@LocalServerPort
int randomServerPort;
//---- tests -----
}
Code language: PHP (php)
3. Sử dụng @SpringBootTest để kiểm tra đơn vị
Chú thích @SpringBootTest tải toàn bộ ứng dụng, nhưng tốt hơn là chỉ nên giới hạn Ngữ cảnh ứng dụng trong một tập hợp các thành phần mùa xuân tham gia vào kịch bản thử nghiệm.
3.1. ‘classes’ attribute
Thuộc tính classes chỉ định các lớp được chú thích để sử dụng để tải ApplicationContext.
@SpringBootTest(classes = {EmployeeRepository.class, EmployeeService.class})
public class SpringBootDemoApplicationTests
{
@Autowired
private EmployeeService employeeService;
//---- tests -----
}
Code language: PHP (php)
3.2. *…Test annotations
Nếu chúng tôi đang viết các bài kiểm tra đơn vị thì tốt hơn bây giờ là sử dụng chú thích @SpringBootTest. Thay vì sử dụng các chú thích kiểm tra khởi động lò xo chuyên dụng để kiểm tra một phần rất cụ thể của ứng dụng.
Các chú thích này vô hiệu hóa toàn bộ cấu hình tự động và thay vào đó chỉ áp dụng cấu hình có liên quan đến các lớp cụ thể của cơ sở mã.
Một số chú thích này được đưa ra dưới đây:
- @WebFluxTest – có thể được sử dụng kết hợp với @RunWith (SpringRunner.class) để kiểm tra Spring WebFlux điển hình chỉ tập trung vào các thành phần Spring WebFlux. Nó cũng sẽ tự động cấu hình WebTestClient.
- @JdbcTest – có thể được sử dụng khi kiểm tra chỉ tập trung vào các thành phần dựa trên jdbc. Chú thích định cấu hình cơ sở dữ liệu nhúng trong bộ nhớ và JdbcTemplate. Theo mặc định, các bài kiểm tra là giao dịch và quay trở lại vào cuối mỗi bài kiểm tra.
- @DataMongoTest – có thể được sử dụng khi kiểm tra chỉ tập trung vào các thành phần MongoDB. Theo mặc định, các bài kiểm tra được chú thích bằng @DataMongoTest sẽ sử dụng quy trình MongoDB được nhúng trong bộ nhớ nếu trình điều khiển có sẵn thông qua các phần phụ thuộc. Nó cũng định cấu hình MongoTemplate, quét các lớp @Document và cấu hình kho lưu trữ MongoDB của Spring Data.
- @DataRedisTest – có thể được sử dụng để kiểm tra các ứng dụng Redis. Nó quét các lớp @RedisHash và cấu hình kho lưu trữ Spring Data Redis.
- @DataLdapTest – có thể được sử dụng để kiểm tra các ứng dụng LDAP. Nó cấu hình một LDAP nhúng trong bộ nhớ (nếu có), cấu hình một LdapTemplate, quét các lớp @Entry và cấu hình kho lưu trữ Spring Data LDAP.
- @RestClientTest – có thể được sử dụng để kiểm tra các máy khách REST. Nó tự động cấu hình các phụ thuộc như hỗ trợ Jackson, GSON và Jsonb, cấu hình RestTemplateBuilder và thêm hỗ trợ cho MockRestServiceServer theo mặc định.
- @JooqTest – được sử dụng khi kiểm tra chỉ tập trung vào các thành phần dựa trên jOOQ.
4. Kết luận
Như đã thảo luận ở trên, hãy sử dụng chú thích @SpringBootTest để viết các bài kiểm tra tích hợp trong ứng dụng khởi động mùa xuân – vì theo mặc định, nó quét và tải toàn bộ ngữ cảnh ứng dụng cũng như tất cả các cấu hình tự động liên quan đến khởi động mùa xuân.
Nếu chúng tôi đang nhắm mục tiêu viết các bài kiểm tra đơn vị và muốn kiểm tra một số phần cụ thể của ứng dụng, chúng tôi sẽ sử dụng chú thích ‘*… Kiểm tra’ chuyên biệt như được thảo luận ở phần sau của hướng dẫn.
Trả lời cho tôi câu hỏi của bạn liên quan đến cách thực hiện kiểm tra tích hợp trong khởi động mùa xuân trong phần nhận xét.
Happy Learning !!
Tổng hợp 200+ tài liệu, sách, bài thực hành, video hướng dẫn lập trình… từ cơ bản đến nâng cao
Leave a Reply