Если я должен ответить в одном предложении, это потому, что Springboot является мнением. Он попытается подключиться к монго, как только обнаружит зависимость монго в вашем 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 из вашего приложения (а не только из ваших тестов). Это означает, что при запуске приложения у вас нет доступа к монго (если это то, что вы хотите).
Поскольку аннотация SpringbootTest
загружает весь текст приложения, он ищет этот класс Main Application. Если у вас исключены некоторые автоконфигурации, они будут исключены даже в ваших тестах. Таким образом, у вас не будет проблемы с подключением к mongo.
Если вы хотите исключить эту автоконфигурацию только в тестах (чтобы при запуске вашего приложения ничего не менялось), вы можете сделать это следующим образом
@TestPropertySource(properties=
{"spring.autoconfigure.exclude=org.springframework.boot.autoconfigure.mongo.MongoAutoConfiguration"})
@SpringBootTest
public class GreetingControllerTests {...}