Si je dois répondre en une phrase, c'est parce que Springboot est Opinionated. Il essaiera de se connecter à mongo dès qu'il remarquera la dépendance de mongo dans votre pom via AutoConfiguration
Des classes.
Si vous souhaitez remplacer le comportement par défaut et dire à Springboot de ne pas faire MongoAutoConfiguration, vous pouvez le faire de cette façon
@SpringBootApplication(exclude=MongoAutoConfiguration.class)
public class YourMainApplication {
public static void main(String[] args) {
SpringApplication.run(TestApplication.class, args);
}
}
ou vous pouvez le faire avec cette ligne dans votre fichier de propriétés
spring.autoconfigure.exclude=org.springframework.boot.autoconfigure.mongo.MongoAutoConfiguration
Si vous faites l'une des choses ci-dessus, cela exclura MongoAutoconfiguration de votre application (pas seulement de vos tests). Ce qui signifie que lorsque vous démarrez votre application, vous n'avez pas accès à mongo (si c'est ce que vous désirez).
Depuis SpringbootTest
L'annotation charge l'ensemble du cotexte de l'application, elle recherche cette classe d'application principale. Si certaines configurations automatiques sont exclues, elles seront exclues, même dans vos tests. Vous n'auriez donc pas le problème de connexion à mongo.
Si vous souhaitez exclure cette Autoconfiguration uniquement dans les tests (afin que rien ne soit modifié lors de l'exécution de votre application), vous pouvez le faire de cette façon
@TestPropertySource(properties=
{"spring.autoconfigure.exclude=org.springframework.boot.autoconfigure.mongo.MongoAutoConfiguration"})
@SpringBootTest
public class GreetingControllerTests {...}