Chủ đề của Tích hợp ứng dụng trang đơn với Spring Boot - Integrate single page application with Spring Boot

SBA301 - Chương 11: Kiểm thử ứng dụng Spring Boot

Kiểm thử ứng dụng tích hợp: phân biệt kiểm thử đơn vị với kiểm thử tích hợp, gói spring-boot-starter-test, annotation SpringBootTest cùng tham số webEnvironment. RANDOM_PORT khởi động máy chủ nhúng trên cổng ngẫu nhiên và là điều kiện để tiêm TestRestTemplate, DEFINED_PORT dùng khi cần gọi HTTP thật vào cổng đã định, còn WebMvcTest chỉ nạp tầng web cho nhẹ. Kèm ExtendWith với SpringExtension khi chạy trên JUnit 5. Chặng này nhắm tới một bộ kiểm thử bám sát ứng dụng thật mà vẫn đủ nhanh để chạy thường xuyên.

Xem danh sách câu hỏi7 câu hỏi100% có giải thích

Bắt đầu bằng Chế độ học nếu bạn muốn đáp án và giải thích hiện ngay sau mỗi câu — không bấm giờ, dừng lúc nào cũng được. Chọn Thi thử khi muốn biết mình đang ở đâu: có bấm giờ, chấm điểm ở cuối, và giải thích chỉ mở sau khi nộp.

Học ngân hàng câu hỏi của chủ đề

Luyện tập theo chủ đề này

7Câu hỏi hiện có

Câu hỏi của chủ đề

7/7 câuHết danh sách
1Which Spring Boot module provides support for integration testing?4 lựa chọnTrung bình50% trả lời đúng
Aspring-boot-starter-web
Bspring-boot-starter-data-jpa
Cspring-boot-starter-test
Dspring-boot-starter-security
Lời giải
Để viết các bài kiểm tra tích hợp trong ứng dụng Spring Boot, bạn cần sử dụng một số module đặc biệt. Module nào trong các lựa chọn dưới đây cung cấp hỗ trợ cho việc viết các bài kiểm tra tích hợp?
Mở trang câu hỏi này →
AIntegration testing.
BEnd-to-end testing.
CUnit testing.
DPerformance testing.
Lời giải
Kiểm thử đơn vị là loại kiểm thử xác minh tính năng của các đơn vị mã nguồn riêng lẻ. Mục tiêu chính của kiểm thử đơn vị là đảm bảo từng đơn vị mã nguồn hoạt động chính xác và không có lỗi. Kiểm thử đơn vị thường được thực hiện trước khi tích hợp các đơn vị mã nguồn lại với nhau để kiểm thử chức năng toàn bộ hệ thống. Nó giúp phát hiện và sửa lỗi sớm, giảm thiểu thời gian và chi phí phát triển phần mềm. Kiểm thử đơn vị thường được thực hiện bằng cách tạo các trường hợp kiểm thử đơn vị, viết mã nguồn kiểm thử và chạy thử nghiệm.
Mở trang câu hỏi này →
3What does @SpringBootTest(webEnvironment = WebEnvironment.RANDOM_PORT) do?4 lựa chọnDễ100% trả lời đúng
AStarts the application with no web environment
BFails the test if no port is provided manually
CDisables the web server
DStarts the embedded server on a random port
Lời giải
Khi sử dụng @SpringBootTest(webEnvironment = WebEnvironment.RANDOM_PORT), Spring Boot sẽ khởi động ứng dụng trong môi trường web ngẫu nhiên. Điều này có nghĩa là ứng dụng sẽ được chạy trên một cổng ngẫu nhiên, thay vì sử dụng cổng mặc định. Mục đích chính của việc này là để tránh xung đột cổng khi chạy nhiều ứng dụng cùng lúc. Ngoài ra, việc sử dụng môi trường web ngẫu nhiên cũng giúp tăng tính bảo mật cho ứng dụng, vì nó làm cho việc đoán cổng của ứng dụng trở nên khó khăn hơn. Khi ứng dụng được khởi động trong môi trường web ngẫu nhiên, Spring Boot sẽ tự động tạo một cổng ngẫu nhiên và cấu hình ứng dụng để sử dụng cổng đó. Điều này giúp đảm bảo rằng ứng dụng có thể được truy cập từ xa mà không cần phải biết cổng cụ thể của ứng dụng.
Mở trang câu hỏi này →
AUse @MockBean
BUse webEnvironment = WebEnvironment.NONE
CUse @WebMvcTest
DUse webEnvironment = WebEnvironment.RANDOM_PORT
Lời giải
Để có thể sử dụng TestRestTemplate trong một @SpringBootTest, bạn cần sử dụng webEnvironment = WebEnvironment.RANDOM_PORT. Điều này cho phép Spring Boot tạo một server tạm thời để phục vụ cho việc kiểm thử. Khi sử dụng RANDOM_PORT, bạn có thể sử dụng TestRestTemplate để gửi yêu cầu đến server tạm thời này. Nếu bạn sử dụng NONE, thì TestRestTemplate sẽ không thể gửi yêu cầu đến server vì server không được tạo. Sử dụng @MockBean hoặc @WebMvcTest sẽ không giúp bạn tạo được server tạm thời để TestRestTemplate có thể gửi yêu cầu.
Mở trang câu hỏi này →
5When used with JUnit 5, which annotation is commonly paired with @SpringBootTest?4 lựa chọnTrung bình60% trả lời đúng
A@MockBean
B@ExtendWith(SpringExtension.class)
C@DataJpaTest
D@TestConfiguration
Lời giải
Khi sử dụng JUnit 5, annotation thường được sử dụng cùng với @SpringBootTest là @ExtendWith(SpringExtension.class). Annotation này cho phép JUnit 5 sử dụng Spring Boot để chạy các test. Nó giúp tạo ra một môi trường thử nghiệm đầy đủ cho ứng dụng Spring Boot, bao gồm cả các tính năng như autowiring và dependency injection. Điều này cho phép các nhà phát triển viết các test đơn giản và hiệu quả hơn. Ngoài ra, @ExtendWith(SpringExtension.class) cũng giúp giảm thiểu số lượng mã cần thiết để cấu hình môi trường thử nghiệm.
Mở trang câu hỏi này →
AwebEnvironment = NONE
BwebEnvironment = MOCK
CuseMockMvc = true
DwebEnvironment = DEFINED_PORT
Lời giải
Để kiểm tra các điểm cuối của controller sử dụng các cuộc gọi HTTP thực tế, bạn cần cấu hình @SpringBootTest để sử dụng môi trường web thực tế. Trong đó, bạn cần thiết lập thuộc tính webEnvironment thành DEFINED_PORT. Điều này cho phép Spring Boot tạo một ứng dụng web thực tế với một cổng cụ thể, và bạn có thể sử dụng các công cụ như Postman hoặc cURL để gửi các yêu cầu HTTP đến ứng dụng này. Điều này giúp bạn kiểm tra các điểm cuối của controller một cách chính xác và hiệu quả hơn.
Mở trang câu hỏi này →
A@Configuration
B@DataJpaTest
C@WebMvcTest
D@EnableAutoConfiguration
Lời giải
Để kiểm tra chỉ lớp web, bạn có thể sử dụng annotation @WebMvcTest thay thế cho @SpringBootTest. Annotation này cho phép bạn kiểm tra lớp web mà không cần phải khởi tạo toàn bộ ứng dụng. @WebMvcTest sẽ tự động tạo một ứng dụng web nhỏ để kiểm tra lớp web của bạn. Điều này giúp bạn kiểm tra các lớp controller, service và repository mà không cần phải khởi tạo toàn bộ ứng dụng.
Mở trang câu hỏi này →

Đề có câu hỏi của chủ đề này

1 đề chứa ít nhất một câu thuộc chủ đề — mở đề để làm cả bộ, không chỉ từng câu.