Jeśli mam odpowiedzieć jednym zdaniem, to dlatego, że Springboot jest opiniowany. Będzie próbował połączyć się z mongo, gdy tylko zauważy zależność mongo w twoim pom przez AutoConfiguration
zajęcia.
Jeśli chcesz zastąpić domyślne zachowanie i powiedzieć Springboot, aby nie robił MongoAutoConfiguration, możesz to zrobić w ten sposób
@SpringBootApplication(exclude=MongoAutoConfiguration.class)
public class YourMainApplication {
public static void main(String[] args) {
SpringApplication.run(TestApplication.class, args);
}
}
lub możesz to zrobić za pomocą tego wiersza w pliku właściwości
spring.autoconfigure.exclude=org.springframework.boot.autoconfigure.mongo.MongoAutoConfiguration
Jeśli zrobisz jedną z powyższych czynności, MongoAutoconfiguration zostanie wykluczone z twojej aplikacji (nie tylko z twoich testów). Co oznacza, że po uruchomieniu aplikacji nie masz dostępu do mongo (jeśli tego chcesz).
Od SpringbootTest
adnotacja ładuje cały tekst aplikacji, szuka tej klasy aplikacji głównej. Jeśli masz wykluczone niektóre Autokonfiguracje, zostaną one wykluczone, nawet w twoich testach. Więc nie miałbyś problemu z połączeniem z mongo.
Jeśli chcesz wykluczyć tę Autokonfigurację tylko w testach (aby podczas uruchamiania aplikacji nic się nie zmieniło), możesz to zrobić w ten sposób
@TestPropertySource(properties=
{"spring.autoconfigure.exclude=org.springframework.boot.autoconfigure.mongo.MongoAutoConfiguration"})
@SpringBootTest
public class GreetingControllerTests {...}