Nếu tôi phải trả lời trong một câu, điều này là do Springboot được Ý kiến. Nó sẽ cố gắng kết nối với mongo ngay khi nhận thấy sự phụ thuộc của mongo trong pom của bạn thông qua AutoConfiguration
các lớp học.
Nếu bạn muốn ghi đè hành vi mặc định và yêu cầu Springboot không thực hiện MongoAutoConfiguration thì bạn có thể thực hiện theo cách này
@SpringBootApplication(exclude=MongoAutoConfiguration.class)
public class YourMainApplication {
public static void main(String[] args) {
SpringApplication.run(TestApplication.class, args);
}
}
hoặc bạn có thể làm điều đó với dòng này trong tệp thuộc tính của mình
spring.autoconfigure.exclude=org.springframework.boot.autoconfigure.mongo.MongoAutoConfiguration
Nếu bạn thực hiện một trong hai điều trên, thì nó sẽ loại trừ MongoAutoconfiguration khỏi ứng dụng của bạn (không chỉ khỏi các thử nghiệm của bạn). Có nghĩa là khi bạn khởi động ứng dụng của mình thì bạn không có quyền truy cập vào mongo (Nếu đây là những gì bạn mong muốn).
Kể từ SpringbootTest
chú thích tải toàn bộ văn bản ứng dụng, nó tìm kiếm lớp Ứng dụng chính này. Nếu bạn có một số Cấu hình tự động bị loại trừ thì nó sẽ loại trừ, ngay cả trong các thử nghiệm của bạn. Vì vậy, bạn sẽ không gặp sự cố kết nối với mongo.
Nếu bạn chỉ muốn loại trừ Cấu hình tự động này trong các thử nghiệm (để trong khi chạy ứng dụng của bạn không có gì thay đổi), bạn có thể thực hiện theo cách này
@TestPropertySource(properties=
{"spring.autoconfigure.exclude=org.springframework.boot.autoconfigure.mongo.MongoAutoConfiguration"})
@SpringBootTest
public class GreetingControllerTests {...}