2011-09-15 16 views
8

के साथ यूनिट परीक्षण हाइबरनेट डास मैं अपने हाइबरनेट दाओ कार्यान्वयन के लिए जुनीट लिखना चाहता हूं और इन यूनिट टेस्टकेस लिखने के लिए सुझाए गए दृष्टिकोण पर राय लेना चाहता हूं। मैं दो रणनीतियों के बारे में सोच सकता हूं।वसंत

  • EasyMock जैसी लाइब्रेरी का उपयोग करके हाइबरनेट टेम्पलेट का मज़ाक उड़ाकर और इन नकली वस्तुओं के खिलाफ केवल डीएओ कार्यान्वयन का परीक्षण करना। (वास्तव में संतोषजनक नहीं है क्योंकि मैं एक नकली परत के खिलाफ परीक्षण कर रहा हूं और वास्तव में परीक्षण डेटा के खिलाफ नहीं)

  • मेरा यूनिट परीक्षण चलाने से पहले कुछ परीक्षण डेटा लिखकर एक वास्तविक परीक्षण डेटाबेस (एक मेमोरी/बाहरी) के खिलाफ परीक्षण करना।

कौन सा दृष्टिकोण हमारे डीएओ का उचित परीक्षण करने का एक अच्छा तरीका है। दूसरे दृष्टिकोण का उपयोग करके परीक्षणों को कॉन्फ़िगर करने के लिए कृपया मुझे किसी भी उदाहरण पर इंगित करें। मैंने चारों ओर देखने की कोशिश की लेकिन सही नहीं मिला।

धन्यवाद, शिव।

+1

बस अगस्त की टिप्पणी पर जोड़ना चाहता था कि आप डीबीयूनीट का उपयोग डेटा के साथ क्वेरी के साथ अपने परीक्षण डेटाबेस को पॉप्युलेट करने के लिए कर सकते हैं। – jwmajors81

उत्तर

5

मैं डीबी इंजन के रूप में HSQLDB का उपयोग करके दूसरे तरीके का पालन करता हूं। मुझे लगता है कि डीएओ के पीछे वास्तविक कार्यान्वयन का आह्वान करने से मैपिंग त्रुटियों को पकड़ने का सकारात्मक प्रभाव पड़ता है।

यदि आपके डीएओ के पास अधिक तर्क है कि यह हाइबरनेट से निपटने से संबंधित नहीं है (कल्पना करें कि क्या आप डीएओ कुछ ऑब्जेक्ट्स लोड करते हैं और फिर एक अलग ऑब्जेक्ट वापस करने के लिए उन पर कुछ ऑपरेशन करते हैं), तो मैं परीक्षण करने के लिए एक अलग टेस्ट क्लास तैयार करूंगा अतिरिक्त तर्क के साथ विधियों, और डेटा वापस करने के तरीकों का नकल। यह आपको डीबी को प्राथमिकता देने और तुरंत उन वस्तुओं को लोड करने के बजाय डेटा को एक आसान तरीके से स्थापित करने की अनुमति देता है।

3

एक वास्तविक डेटाबेस के खिलाफ परीक्षण। हाइबरनेट की अधिकांश जटिलता मानचित्रण में है, और यदि आप सत्र फैक्ट्री (या जो इसे समाहित करता है) का मज़ाक उड़ाते हैं, तो आप पूरी तरह से परीक्षण को याद करते हैं। Spring Test Framework का उपयोग अपने परीक्षण को बहुत कम करने के लिए, और स्थानीय, "यूनिट" परीक्षणों के लिए, इन-मेमोरी डेटाबेस के विरुद्ध परीक्षण करें। एच 2 उपयोग करने में आसान है और बहुत तेज है (एचएसक्यूएलडीबी या डर्बी से बेहतर)। उदा।

@RunWith(SpringJUnit4ClassRunner.class) 
@ContextConfiguration("your test context.xml") 
public class FooDaoTest { 
    @Autowired 
    private FooDao dao; 

    @Transactional 
    public void saveFoo_succeeds() { 
     // test save 
    } 

    @Transactional 
    public void saveAndLoadFoo_resultsInSameFieldValues() { 
     // save and load; compare fields from before to after 
    } 

    // test custom queries 
}