Se devo rispondere in una frase, è perché Springboot è supponente. Proverà a connettersi a mongo non appena nota la dipendenza da mongo nel tuo pom tramite AutoConfiguration
classi.
Se vuoi ignorare il comportamento predefinito e dire a Springboot di non eseguire MongoAutoConfiguration, puoi farlo in questo modo
@SpringBootApplication(exclude=MongoAutoConfiguration.class)
public class YourMainApplication {
public static void main(String[] args) {
SpringApplication.run(TestApplication.class, args);
}
}
oppure puoi farlo con questa riga nel tuo file delle proprietà
spring.autoconfigure.exclude=org.springframework.boot.autoconfigure.mongo.MongoAutoConfiguration
Se esegui una delle operazioni precedenti, escluderà MongoAutoconfiguration dalla tua applicazione (non solo dai tuoi test). Ciò significa che quando avvii la tua applicazione, non hai accesso a mongo (se questo è ciò che desideri).
Da SpringbootTest
l'annotazione carica l'intero cotext dell'applicazione, cerca questa classe dell'applicazione principale. Se hai alcune Autoconfigurazioni escluse, verranno escluse, anche nei tuoi test. Quindi non avresti il problema di connessione a mongo.
Se desideri escludere questa configurazione automatica solo nei test (in modo che durante l'esecuzione della tua applicazione non venga modificato nulla), puoi farlo in questo modo
@TestPropertySource(properties=
{"spring.autoconfigure.exclude=org.springframework.boot.autoconfigure.mongo.MongoAutoConfiguration"})
@SpringBootTest
public class GreetingControllerTests {...}