मेरे वसंत + मेवेन ऐप में, मैंने डेटा एक्सेस लेयर के लिए कुछ परीक्षण बनाए हैं जिन्हें मैं अब कई डेटा स्रोतों के विरुद्ध चलाने के लिए चाहता हूं। मैं की तरह कुछ है:मैवेन: विभिन्न कॉन्फ़िगरेशन के लिए समान परीक्षण चलाना
@ContextConfiguration(locations={"file:src/test/resources/testAppConfigMysql.xml"})
public class TestFooDao extends AbstractTransactionalJUnit38SpringContextTests {
public void testFoo(){
...
}
}
यह वर्तमान में config स्थान हार्डकोडेड है, तो यह केवल एक डेटा स्रोत के खिलाफ इस्तेमाल किया जा सकता है। दो बार परीक्षण का आह्वान करने और दो अलग-अलग कॉन्फ़िगरेशन पास करने का सबसे अच्छा तरीका क्या है (testAppConfigMysql.xml और testMyConfigHsqlDb.xml कहें)?
मैंने सिस्टम गुणों के माध्यम से ऐसा करने के लिए सुझाव देखे हैं। सिस्टम प्रॉपर्टी के विभिन्न मूल्यों के साथ, मैं दो बार परीक्षणों का आह्वान करने के लिए मैवेन को कैसे बता सकता हूं?
लेकिन मेरे पास कई दास फू, बार, ... (उनमें से लगभग 15) हैं और इस प्रकार 15 परीक्षण कक्षाएं टेस्टफूडाओ, टेस्टबार्डडाओ ... आपके समाधान में मुझे कक्षाओं की संख्या दोगुना करना होगा, जो मैं करता हूं नहीं चाहते (मैं सभी परीक्षणों को एक विशाल वर्ग में भी विलय नहीं करना चाहता) – jfu
हाँ, मुझे पता है। लेकिन मुझे वास्तव में कोई बेहतर समाधान नहीं दिख रहा है। जैसा कि मैंने कहा, मुझे पूरी तरह से पता है कि यह समाधान सही नहीं है और थोड़ा सा बेकार है। अन्य बात जो मेरे दिमाग में आई थी, संदर्भ कॉन्फ़िगरेशन के लिए वसंत अनिवार्य समर्थन के साथ जुनीट के सिद्धांतों के किसी प्रकार के मिश्रण का उपयोग करने का प्रयास करना है। इसका मतलब है कि आप स्प्रिंग संदर्भ की एनोटेशन-आधारित कॉन्फ़िगरेशन ड्रॉप करते हैं और किसी विधि को कॉल करके इसे किसी भी तरह सेटअप करने का प्रयास करते हैं। हालांकि मुझे पता नहीं है कि स्प्रिंग एपीआई ने आपको कुछ संदर्भ या उदाहरण देने के लिए अच्छा लगाया है। मुझे यकीन नहीं है कि यह वास्तव में संभव है और ठीक काम करता है, लेकिन मैं इसके बारे में हालांकि। –
एक और विचार: शायद स्प्रिंग टेस्टिंग समर्थन वर्गों (जैसे 'SpringJUnit4ClassRunner' या इसके आसपास कुछ सहायक) जैसे विस्तार से मामला हल हो जाएगा, अगर वास्तव में आउट-ऑफ-द-बॉक्स समाधान नहीं है।मेरी राय में, आप कोड के टुकड़े को ओवरराइड कर सकते हैं जो '@ ContextConfiguration' एनोटेशन को संभालता है और अपने तर्क को लागू करने का प्रयास करता है, शायद कस्टम एनोटेशन का उपयोग करके जो एकाधिक संदर्भों को इंगित करने वाले पैरामीटर को स्वीकार करता है। –