हमारे वसंत वेब अनुप्रयोगों में, हम तीन परिदृश्यों को अलग करने के लिए स्प्रिंग बीन प्रोफाइल का उपयोग करते हैं: विकास, एकीकरण और उत्पादन। हम उन्हें विभिन्न डेटाबेस से कनेक्ट करने या अन्य स्थिरांक सेट करने के लिए उपयोग करते हैं।प्रोफ़ाइल के साथ वसंत एकीकरण परीक्षण
वसंत बीन प्रोफाइल का उपयोग वेब ऐप पर्यावरण को बदलने के लिए बहुत अच्छी तरह से काम करता है।
हमारे पास समस्या है जब हमारे एकीकरण परीक्षण कोड पर्यावरण के लिए परिवर्तन की आवश्यकता है। इन मामलों में, एकीकरण परीक्षण वेब ऐप के अनुप्रयोग संदर्भ को लोड करता है। इस तरह हमें डेटाबेस कनेक्शन, स्थिरांक इत्यादि को फिर से परिभाषित करने की आवश्यकता नहीं है (डीआरवाई सिद्धांत लागू करना)।
हम निम्नलिखित जैसे हमारे एकीकरण परीक्षण सेटअप करते हैं।
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = ["classpath:applicationContext.xml"])
public class MyTestIT
{
@Autowired
@Qualifier("myRemoteURL") // a value from the web-app's applicationContext.xml
private String remoteURL;
...
}
मैं इसे @ActiveProfiles
का उपयोग कर स्थानीय स्तर पर चलाने के लिए कर सकते हैं, लेकिन यह हार्ड-कोडेड है और निर्माण सर्वर पर विफल हमारे परीक्षणों का कारण बनता है।
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = ["classpath:applicationContext.xml"])
@ActiveProfiles("development")
public class MyTestIT
{ ... }
मैं भी उम्मीद कर रहा है कि यह किसी भी तरह Maven से spring.profiles.active
संपत्ति आयात हो सकता है @WebAppConfiguration
उपयोग करने की कोशिश, लेकिन वह काम नहीं करता।
एक अन्य नोट, हमें अपने कोड को कॉन्फ़िगर करने की भी आवश्यकता है ताकि डेवलपर वेब ऐप चला सकें और फिर IntelliJ के टेस्ट रनर (या किसी अन्य आईडीई) का उपयोग करके परीक्षण चलाएं। डीबगिंग एकीकरण परीक्षण के लिए यह बहुत आसान है।
मैं वसंत 3.2 उपयोग कर रहा हूँ और आइटम # 2 काम करता है बहुत अच्छी तरह से इसके लिए। मैं 'configurableAplicationContext.getEnvironment()। SetDefaultProfiles (" विकास ") को कॉल करने के लिए अपना 'ApplicationContextInitializer' सेट अप करता हूं;' जब मैं IntelliJ के माध्यम से परीक्षण चलाता हूं तो विकास प्रोफ़ाइल चलाता है। –
क्या 'ActiveProfilesResolver' का उपयोग करने के बारे में कोई उदाहरण है? मुझे वास्तव में यह नहीं पता कि इसका उपयोग कैसे करें – daydreamer
हां, [परीक्षण अध्याय] में एक कस्टम 'ActiveProfilesResolver' का उपयोग करने का एक उदाहरण है (http://docs.spring.io/spring/docs/current/spring-framework स्प्रिंग फ्रेमवर्क संदर्भ मैनुअल के संदर्भ/एचटीएमएल/test.html # testcontext-ctx-management-env-profiles-ActiveProfilesResolver)। –