Om jag ska svara i en mening så beror det på att Springboot är Opinionated. Den kommer att försöka ansluta till mongo så snart den märker mongo-beroende i din pom genom AutoConfiguration
klasser.
Om du vill åsidosätta standardbeteendet och berätta för Springboot att inte göra MongoAutoConfiguration så kan du göra det så här
@SpringBootApplication(exclude=MongoAutoConfiguration.class)
public class YourMainApplication {
public static void main(String[] args) {
SpringApplication.run(TestApplication.class, args);
}
}
eller så kan du göra det med den här raden i din egenskapsfil
spring.autoconfigure.exclude=org.springframework.boot.autoconfigure.mongo.MongoAutoConfiguration
Om du gör något av ovanstående, kommer det att utesluta MongoAutoconfiguration från din applikation (inte bara från dina tester). Vilket innebär att när du startar din ansökan har du inte tillgång till mongo (om det är vad du önskar).
Sedan SpringbootTest
annoteringen laddar hela applikationens samtext, den letar efter denna huvudapplikationsklass. Om du har exkluderat några autokonfigurationer kommer det att uteslutas, även i dina tester. Så du skulle inte ha problem med att ansluta till mongo.
Om du endast vill utesluta denna autokonfiguration i tester (så att inget ändras medan du kör din applikation), kan du göra det på detta sätt
@TestPropertySource(properties=
{"spring.autoconfigure.exclude=org.springframework.boot.autoconfigure.mongo.MongoAutoConfiguration"})
@SpringBootTest
public class GreetingControllerTests {...}