अगर मुझे एक वाक्य में जवाब देना है, तो इसका कारण यह है कि स्प्रिंगबूट ओपिनियनेटेड है। जैसे ही यह आपके पोम में AutoConfiguration
के माध्यम से mongo निर्भरता को नोटिस करेगा, यह mongo से कनेक्ट करने का प्रयास करेगा कक्षाएं।
यदि आप डिफ़ॉल्ट व्यवहार को ओवरराइड करना चाहते हैं और स्प्रिंगबूट को 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
एनोटेशन पूरे एप्लिकेशन कोटेक्स्ट लोड करता है, यह इस मुख्य एप्लिकेशन क्लास की तलाश करता है। यदि आपके पास कुछ ऑटोकॉन्फ़िगरेशन बहिष्कृत हैं तो यह आपके परीक्षणों में भी बहिष्कृत कर देगा। तो आपके पास मोंगो मुद्दे से कनेक्ट नहीं होगा।
यदि आप इस ऑटोकॉन्फ़िगरेशन को केवल परीक्षणों में बाहर करना चाहते हैं (ताकि आपका एप्लिकेशन चलाते समय कुछ भी नहीं बदला जाए), तो आप इसे इस तरह से कर सकते हैं
@TestPropertySource(properties=
{"spring.autoconfigure.exclude=org.springframework.boot.autoconfigure.mongo.MongoAutoConfiguration"})
@SpringBootTest
public class GreetingControllerTests {...}