मूल रूप से वसंत आपके लिए इसे कॉन्फ़िगर करने के लिए पर्याप्त स्मार्ट है यदि आपके पास विभिन्न टेस्ट कक्षाओं में एक ही एप्लिकेशन संदर्भ कॉन्फ़िगरेशन है। उदाहरण के लिए मान लें कि आपके पास ए और बी दो वर्ग हैं:
@ActiveProfiles("h2")
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
public class A {
@MockBean
private C c;
}
@ActiveProfiles("h2")
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
public class B {
@MockBean
private D d;
}
इस उदाहरण में क्लास ए मोक्स बीन सी, जबकि क्लास बी मोक्स बीन डी। तो, स्प्रिंग इन्हें दो अलग-अलग कॉन्फ़िगरेशन मानते हैं और इस तरह क्लास ए के लिए एक बार और क्लास बी के लिए एक बार आवेदन के संदर्भ को लोड करेंगे।
यदि इसके बजाय, हम चाहते हैं कि वसंत इन दो वर्गों के बीच अनुप्रयोग संदर्भ साझा करे, तो उन्हें कुछ इस प्रकार देखना होगा:
@ActiveProfiles("h2")
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
public class A {
@MockBean
private C c;
@MockBean
private D d;
}
@ActiveProfiles("h2")
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
public class B {
@MockBean
private C c;
@MockBean
private D d;
}
यदि आप अपनी कक्षाओं को इस तरह से तार करते हैं, तो वसंत केवल एक बार या तो कक्षा ए या बी के लिए आवेदन के संदर्भ को लोड करेगा, इस पर निर्भर करता है कि दोनों में से कौन सा वर्ग पहले परीक्षण सूट में चला गया है। इसे कई परीक्षण कक्षाओं में दोहराया जा सकता है, केवल मानदंड यह है कि आपको परीक्षण कक्षाओं को अलग तरीके से अनुकूलित नहीं करना चाहिए। कोई भी अनुकूलन जिसके परिणामस्वरूप परीक्षण वर्ग दूसरे (वसंत की आंखों में) से अलग होता है, वसंत द्वारा एक और अनुप्रयोग संदर्भ बनाता है।