Ако трябва да отговоря с едно изречение, това е защото Springboot е Opinionated. Ще се опита да се свърже с mongo веднага щом забележи зависимост от mongo във вашия pom чрез AutoConfiguration
класове.
Ако искате да замените поведението по подразбиране и да кажете на Springboot да не прави MongoAutoConfiguration, тогава можете да го направите по този начин
@SpringBootApplication(exclude=MongoAutoConfiguration.class)
public class YourMainApplication {
public static void main(String[] args) {
SpringApplication.run(TestApplication.class, args);
}
}
или можете да го направите с този ред във вашия файл със свойства
spring.autoconfigure.exclude=org.springframework.boot.autoconfigure.mongo.MongoAutoConfiguration
Ако направите някое от горните, това ще изключи MongoAutoconfiguration от вашето приложение (не само от вашите тестове). Което означава, че когато стартирате приложението си, нямате достъп до mongo (ако това е, което желаете).
От SpringbootTest
анотацията зарежда целия котекст на приложението, търси този главен клас на приложение. Ако имате изключени някои автоконфигурации, тогава те ще изключат, дори във вашите тестове. Така че няма да имате проблем със свързването към mongo.
Ако желаете да изключите тази автоматична конфигурация само при тестове (така че докато работите с вашето приложение нищо да не се променя), можете да го направите по следния начин
@TestPropertySource(properties=
{"spring.autoconfigure.exclude=org.springframework.boot.autoconfigure.mongo.MongoAutoConfiguration"})
@SpringBootTest
public class GreetingControllerTests {...}