2013-04-08 10 views
11

नहीं है, मैं grails 2.1.x को अपग्रेड करने की प्रक्रिया में हूं, और मेरे कुछ पुराने स्टाइल परीक्षणों को फिर से करने की आवश्यकता है।इंटेलिज आइडिया में 2.1.3 परीक्षण चल रहे हैं: स्पॉक परीक्षण में विचित्र त्रुटि: डोमेन क्लास [वर्ग x.y.Z] जोड़ नहीं सकते हैं। यह डोमेन

मैंने अभी अपने स्पॉक स्पेक में एक नया परीक्षण जोड़ा है, और इस परीक्षण के लिए मुझे एक अतिरिक्त डोमेन क्लास का नकल करने की आवश्यकता है।

इस से पहले, मैं था:

@Mock([Event, EventType]) 

अब मेरे पास है:

@Mock([Event, EventType, Notification]) 

Notification.groovy (grails-ऐप के तहत एक ही सटीक पैकेज और घटना और EventType से शारीरिक निर्देशिका में है/डोमेन) तो यह निश्चित रूप से एक grails डोमेन वर्ग है।

जब मैं अपने परीक्षण मैं निम्नलिखित स्टैक ट्रेस मिल चलाने का प्रयास:

org.codehaus.groovy.grails.exceptions.GrailsConfigurationException: Cannot add Domain class [class x.y.Notification]. It is not a Domain! 
    at org.codehaus.groovy.grails.commons.DefaultGrailsApplication.addArtefact(DefaultGrailsApplication.java:911) 
    at org.codehaus.groovy.grails.commons.DefaultGrailsApplication.addArtefact(DefaultGrailsApplication.java:615) 
    at grails.test.mixin.domain.DomainClassUnitTestMixin.mockDomain(DomainClassUnitTestMixin.groovy:131) 
    at grails.test.mixin.domain.DomainClassUnitTestMixin.mockDomain(DomainClassUnitTestMixin.groovy:128) 

जब मैं खरगोश छेद के माध्यम से जाने के लिए और निष्पादन डिबगिंग शुरू, मैं DomainClassArtefactHandler (लाइन 87) के इस भाग को मिलता है:

  // make sure the identify and version field exist 
      testClass.getDeclaredField(GrailsDomainClassProperty.IDENTITY); 
      testClass.getDeclaredField(GrailsDomainClassProperty.VERSION); 

इस एक अपवाद के साथ चल रही है, क्योंकि मुझे लगता है कि आईडी फ़ील्ड मौजूद नहीं है

तो कुछ गलत हो रहा है, GORM क्षेत्रों नहीं विज्ञापन कर रहे हैं इसे निष्पादित करने से पहले समर्पित करें।

क्या किसी के पास मुझे क्या करना है इसका सुझाव है? क्या मुझे अपनी डोमेन क्लास को @Entity के रूप में चिह्नित करने की आवश्यकता है (यह वास्तव में मेरा परीक्षण पास बनाता है)?

मुझे पूरा यकीन है कि मेरे यूनिट परीक्षण पास होने के लिए अनिवार्य नहीं होना चाहिए।

कोई सलाह?

अद्यतन: वास्तव में, मैं सिर्फ पता चला है कि इस मुद्दे को केवल उठता है जब मैं अपने आईडीई के अंदर इकाई परीक्षण चलाएँ: 12.1

मुद्दे बनाया IntelliJ विचार, परीक्षण ऐप को यहाँ के साथ:

http://jira.grails.org/browse/GRAILS-9989

http://youtrack.jetbrains.com/issue/IDEA-105087

जब मैं दोनों डोमेन की कक्षाओं में स्थिर मानचित्रण ब्लॉकों को हटाने, परीक्षण पा sses!

+1

क्या यह एकीकरण परीक्षण फ़ोल्डर या इकाई परीक्षण फ़ोल्डर में है? इसके अलावा यदि आपके पास विनिर्देशन का विस्तार करने और @TestFor का उपयोग करने वाले किसी भी स्पॉक एकीकरण परीक्षण हैं तो आपको वास्तव में अजीब त्रुटियां मिलेंगी जिन्हें आपको अभी भी इंटीग्रेशन टेस्ट के लिए इंटीग्रेशनपेक का उपयोग करने की आवश्यकता है। –

+0

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

+1

उस डोमेन ऑब्जेक्ट के लिए एक स्थिर मैपिंग ब्लॉक है? –

उत्तर

19

ऐसा लगता है कि यह मुद्दा आईडीईए के कारण एक टेस्ट रन से दूसरे में सही ढंग से सफाई नहीं कर रहा था। प्रोजेक्ट को पुनर्निर्माण करने के बाद परीक्षण पास हो जाते हैं।

+0

क्या आप इस परियोजना को पुनर्निर्माण करके क्या मतलब समझ सकते हैं? मैं इस मुद्दे के साथ भी अटक गया हूं, इसकी निश्चित रूप से इंटेलिजे संबंधित है, लेकिन यह सुनिश्चित नहीं है कि इसे रीसेट करने के लिए वास्तव में क्या करने की आवश्यकता है। – dbrin

+1

यदि आप आईडीईए (14.x) के नवीनतम संस्करण का उपयोग कर रहे हैं, तो एक और बग है जो एक ही व्यवहार का कारण बनता है, और परियोजना का पुनर्निर्माण कार्य नहीं करेगा। Https://youtrack.jetbrains.com/issue/IDEA-138275 देखें और टिप्पणियों में एक समाधान है: सेटिंग्स में प्रक्रिया संकलन में अक्षम: -Dgroovyc.in.process = false। – loteq

+0

ठीक है, मैं इस विकल्प को आजमा रहा हूं, क्या मुझे कुछ और करने की ज़रूरत है, क्योंकि मुझे अभी भी समस्या दिखाई दे रही है? – dbrin

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