Hvis jeg skal svare i én sætning, er det fordi Springboot er Opinionated. Det vil forsøge at oprette forbindelse til mongo, så snart det bemærker mongo-afhængighed i din pom gennem AutoConfiguration
klasser.
Hvis du vil tilsidesætte standardadfærden og fortælle Springboot ikke at udføre MongoAutoConfiguration, kan du gøre det på denne måde
@SpringBootApplication(exclude=MongoAutoConfiguration.class)
public class YourMainApplication {
public static void main(String[] args) {
SpringApplication.run(TestApplication.class, args);
}
}
eller du kan gøre det med denne linje i din egenskabsfil
spring.autoconfigure.exclude=org.springframework.boot.autoconfigure.mongo.MongoAutoConfiguration
Hvis du gør et af ovenstående, vil det udelukke MongoAutoconfiguration fra din applikation (ikke kun fra dine tests). Hvilket betyder, at når du starter din ansøgning, så har du ikke adgang til mongo (hvis det er det, du ønsker).
Siden SpringbootTest
annotation indlæser hele applikationens cotext, den leder efter denne hovedapplikationsklasse. Hvis du har nogle autokonfigurationer udelukket, vil det ekskludere, selv i dine tests. Så du ville ikke have forbindelse til mongo-problemet.
Hvis du kun ønsker at udelukke denne autokonfiguration i test (så at intet ændres under kørsel af din applikation), kan du gøre det på denne måde
@TestPropertySource(properties=
{"spring.autoconfigure.exclude=org.springframework.boot.autoconfigure.mongo.MongoAutoConfiguration"})
@SpringBootTest
public class GreetingControllerTests {...}