Grails

2010-05-25 12 views
9

में जल्दी से एकल एकीकरण परीक्षण चला रहा है क्या Grails में जल्दी से कक्षा में एकल/सभी एकीकरण परीक्षण को जल्दी से चलाने के लिए संभव है। टेस्ट-ऐप सभी संकलित फाइलों के समाशोधन के भारी सामान के साथ आता है और कोबर्टूरा रिपोर्ट उत्पन्न करता है, भले ही हम एकल एकीकरण परीक्षण चलाते हैं, फिर भी संपूर्ण कोड बेस संकलित, वाद्य यंत्र और कोबर्टूरा रिपोर्ट उत्पन्न हो रही है। हमारे आवेदन के लिए इसमें 2 मिनट से अधिक समय लगता है।Grails

यदि एकीकरण परीक्षण को जल्दी से चलाने और तेजी से फीडबैक प्राप्त करना संभव था, तो यह बेहद सहायक होगा।

साथ ही, परीक्षा पूरी होने के बाद सभी संकलित फ़ाइलों को साफ़ करना महत्वपूर्ण है? यह सफाई ठीक है अगर हम एकीकरण परीक्षण के पूरे सेट को चलाते हैं, लेकिन यदि हम कक्षा में एक या दो परीक्षण चलाने जा रहे हैं तो यह सफाई और पुन: संकलन डेवलपर्स को त्वरित प्रतिक्रिया के लिए एक बड़ी बाधा प्रतीत होता है।

धन्यवाद

उत्तर

5

यह एकीकरण परीक्षण करने के इरादे के रूप में नाम का तात्पर्य, इस पूरे संकलन, डेटा बेस निर्माण, सर्वर शुरू, आदि क्योंकि परीक्षण एक एकीकृत वातावरण में चलाना चाहिए करना है।

शायद आप यूनिट परीक्षणों में कुछ परीक्षण निकाल सकते हैं। ये आप ग्रहण में भाग सकते हैं। आप एक एकीकरण परीक्षण वर्ग

class SimpleControllerTests extends GrailsUnitTestCase { 
    public void testLogin() {} 
    public void testLogin2() {} 
    public void testLogin3() {} 
} 

है, तो आप चला सकते हैं

coverage { 
    enabledByDefault = false 
} 
+0

कोबर्टुरा वास्तव में समस्या थी। हम कोबर्टूरा प्लगइन का उपयोग कर रहे थे और प्लगइन उत्पन्न होने के बाद प्लगइन सभी संकलित स्रोतों को साफ़ कर दिया गया था, इससे हमें वृद्धिशील संकलन से जुड़े सभी लाभों का शोषण करने से रोका गया। इसके अलावा, एक या दो परीक्षण चलाने के लिए हमारे लिए एक व्यापक कोबर्टूरा रिपोर्ट की आवश्यकता नहीं होती है और एक बार जब हम इसे अक्षम कर देते हैं तो एकीकरण परीक्षण जल्दी से भाग जाता है। सूचक के लिए धन्यवाद। – Prakash

15

:

आप/BuildConfig.groovy अपने grails एप्लिकेशन के अंतर्गत/conf में निम्नलिखित कोड रखकर Cobertura बंद कर सकता है इस वर्ग में केवल एक परीक्षण का उपयोग करके:

grails test-app integration: SimpleController.testLogin 

हालांकि, आपको अभी भी टीआई करना होगा मुझे एकीकरण परीक्षण के लिए आवश्यक जुर्माना (डीबी से कनेक्ट करना, वसंत बीन्स को तत्काल, इत्यादि)

यदि आप अपने परीक्षणों को जल्दी से चलाने के लिए चाहते हैं, तो एकीकरण परीक्षणों के बजाय यूनिट परीक्षण लिखने का प्रयास करें।

+0

चल रहा एक परीक्षण उदाहरण के लिए काम करता है, बस कक्षा के लिए पूर्ण पथ की जरूरत है –

0

जैसा कि आपने कहा था, अधिकांश समय अनुप्रयोग वातावरण स्थापित कर रहा है, सेम इंजेक्शन कर रहा है और गतिशील कक्षा एनोटेशन कर रहा है। आप grails REPL में अपने परीक्षण चलाकर, केवल एक बार लोड करके अपने एकीकरण परीक्षण चक्र को तेज़ी से बढ़ा सकते हैं।

हालांकि, व्यापारिक बात यह है कि आरईपीएल में गतिशील पुनः लोड करने के मुद्दे हैं। यदि आप यादृच्छिक अजीबता देखते हैं, तो आरईपीएल से बाहर निकलें और पुनः लोड करें।

$> ./grailsw --plain-output 
|Loading Grails 2.5.3 
|Configuring classpath 
|Enter a script name to run. Use TAB for completion: 
grails> test-app -integration 
... (loads some things) 
... 
grails> test-app -integration 
... (faster loading) 

और अन्य टिप्पणीकर्ताओं का जवाब देने के - एकीकरण परीक्षण के साथ-साथ उपयोगी होते हैं, वहाँ कुछ कोड है कि एक इकाई परीक्षण (उदाहरण, परीक्षण HQL या SQL क्वेरी के लिए) के साथ परीक्षण नहीं किया जा सकता है।