2010-05-18 15 views
13

में वर्तमान से संबंधित दिनांक मैं सोच रहा हूं कि कल उदाहरण के लिए डीबीयूनीट एक्सएमएल डेटासेट में निर्दिष्ट करने का कोई तरीका है या नहीं। कभी-कभी भविष्य में तारीखों और अतीत की तिथियों के लिए कोड तर्क अलग होता है और मैं दोनों मामलों का परीक्षण करना चाहता हूं। निश्चित रूप से मैं 5 नवंबर 2239 की तरह कुछ निर्दिष्ट कर सकता हूं और यह सुनिश्चित कर सकता हूं कि परीक्षा इस तारीख तक काम करेगी लेकिन वहां और अधिक शानदार तरीका है।डीबीयूनीट डेटासेट

मुझे अभी तक अपने जावा विकास के दौरान ऐसी स्थिति का सामना नहीं करना पड़ा है, लेकिन एक बार जब मुझे अनुभव हुआ कि कोड तर्क तर्क से एक दिन पहले, तारीख से दो दिन पहले और तिथियों से दो दिन पहले अलग था। इस मामले में डेटाबेस संचालित परीक्षण लिखने का एकमात्र संभावित समाधान डेटा आयात के दौरान सापेक्ष तिथियां डालना है।

क्या इसके लिए डीबीयूनीट द्वारा प्रदान की जाने वाली कोई सुविधा है?

उत्तर

24

मैंने अभी डीबीयूनीट का उपयोग शुरू किया और इसी तरह की क्षमताओं की तलाश में था। दुर्भाग्य से ढांचे में तारीखों के लिए एक अभिव्यक्ति भाषा प्रतीत नहीं होती है। हालांकि, मुझे डीबीयूनीट की रिप्लेसमेंटडेटासेट क्लास का उपयोग करके एक उपयुक्त वर्कअराउंड मिला। यह वर्ग आईडीटासेट ऑब्जेक्ट लेता है और डेटा सेट फ़ाइलों से IDataSet ऑब्जेक्ट द्वारा निकाली गई वस्तुओं को प्रतिस्थापित करने के तरीकों का खुलासा करता है।

डाटासेट

<dataset> 
    <user first_name="Dan" 
      last_name="Smith" 
      create_date="[create_date]"/> 
<dataset> 

स्रोत कोड

String dataSetFile = "testDataFile.xml"; 
IDataSet dataSet = new FlatXmlDataSetBuilder().build(new FileInputStream(dataSetFile)); 
ReplacementDataSet rDataSet = new ReplacementDataSet(dataSet); 
Set<String> keys = dataSetAdjustments.keySet(); 
rDataSet.addReplacementObject("[create_date]", DateUtils.addDays(new Date(), -2)); 

अब, जब परीक्षण उपयोगकर्ता की रचना डेटा चलाता है हमेशा दो दिन पर सेट हो जाएगा से पहले परीक्षण चलाया गया था।

उम्मीद है कि इससे मदद मिलती है। सौभाग्य।

+0

इस तरह के विस्तृत स्पष्टीकरण के लिए धन्यवाद। यह वास्तव में उपयोगी है। – VestniK

+0

जब आप यूनिटिल @ डेटासेट का उपयोग करते हैं तो कैसे? – mjgirl

0

आप भविष्य में तारीखों को परिभाषित करने के लिए add() of Calendar का उपयोग कर सकते हैं और JUnit के लिए डेटास्रोत के साथ संबंध में इसका उपयोग कर सकते हैं। मुझे संदेह है कि यह डीबीयूनीट के एक्सएमएल प्रारूप के साथ काम करेगा। हो सकता है कि आप अपना खुद का टेस्टकेस बनाएं जो डीबीटेस्टकेस से विस्तारित हो और getDataSet() विधि को कार्यान्वित करें।

+0

हाँ मुझे पता है कि जावा में सापेक्ष दिन की गणना कैसे करें। ऐसा लगता है कि मुझे वास्तव में डेटासेट को पार्स करने और मैन्युअल रूप से तिथियों की गणना करने की आवश्यकता है। – VestniK

संबंधित मुद्दे