Als ik in één zin moet antwoorden, is dat omdat Springboot eigenwijs is. Het zal proberen verbinding te maken met mongo zodra het mongo-afhankelijkheid in je pom opmerkt via AutoConfiguration
klassen.
Als u het standaardgedrag wilt overschrijven en Springboot wilt vertellen MongoAutoConfiguration niet uit te voeren, kunt u dit op deze manier doen
@SpringBootApplication(exclude=MongoAutoConfiguration.class)
public class YourMainApplication {
public static void main(String[] args) {
SpringApplication.run(TestApplication.class, args);
}
}
of je kunt het doen met deze regel in je eigenschappenbestand
spring.autoconfigure.exclude=org.springframework.boot.autoconfigure.mongo.MongoAutoConfiguration
Als u een van de bovenstaande handelingen uitvoert, wordt MongoAutoconfiguration uitgesloten van uw toepassing (niet alleen van uw tests). Wat betekent dat wanneer u uw aanvraag start, u geen toegang heeft tot mongo (als dit is wat u wenst).
Sinds SpringbootTest
annotatie laadt de hele applicatie-cotext, het zoekt naar deze hoofdapplicatieklasse. Als u sommige automatische configuraties hebt uitgesloten, wordt deze uitgesloten, zelfs in uw tests. Dus je zou niet het probleem hebben met het verbinden met mongo.
Als u deze automatische configuratie alleen in tests wilt uitsluiten (zodat tijdens het uitvoeren van uw toepassing niets wordt gewijzigd), kunt u dit op deze manier doen
@TestPropertySource(properties=
{"spring.autoconfigure.exclude=org.springframework.boot.autoconfigure.mongo.MongoAutoConfiguration"})
@SpringBootTest
public class GreetingControllerTests {...}