2010-12-06 17 views
5

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

<junit haltonfailure="no" printsummary="on" fork="true" showoutput="true" dir="${plugins.dir}/${name}"> 
    <jvmarg value="-Duser.dir=${plugins.dir}/${name}"/> 
    <classpath> 
     <path refid="project.classpath"/> 
     <pathelement location="${plugins.dir}/${dependency}/@dot/"/> 
     <pathelement location="${plugins.dir}/${name}/" /> 
    </classpath> 
    <formatter type="xml" /> 
    <sysproperty key="basedir" value="${plugins.dir}/${name}"/> 
    <sysproperty key="dir" value="${plugins.dir}/${name}"/> 
    <batchtest todir="${junit.output}"> 
     <fileset dir="${dir}"> 
      <include name="**\*AllTests.class" /> 
     </fileset> 
    </batchtest> 
</junit> 

मैं googled है और खोज की, लेकिन समाधान मैंने पाया सेट "करने के लिए किया गया है:

मैं काम कर निर्देशिका ${plugins.dir}/${name}

चींटी स्क्रिप्ट के JUnit हिस्सा बनना चाहते हैं डीआईआर "," sysproperty "या" jvmarg "। जैसा कि आप देख सकते हैं मैंने उन सभी की कोशिश की है :)

टैग में वर्तमान डीआईआर मुद्रित करने का कोई तरीका है? यह समर्थन नहीं करता है। इससे मुझे यह सत्यापित करने की अनुमति मिल जाएगी कि क्या डीआईआर वास्तव में बदल गया है और क्या।

इस समीकरण में एक वाइल्डकार्ड यह है कि यह हडसन में चलाया जा रहा है जो एक ग्रहण प्रक्रिया शुरू करता है जो एंटर्यूनर शुरू करता है। ऐसा इसलिए है कि हम जूनिट और ग्रहण प्लगइन जूनिट परीक्षण दोनों चला सकते हैं। मुझे लगता है कि समस्या के साथ कुछ भी नहीं करना चाहिए।

+3

यह बस अपने परीक्षण ठीक करने के लिए इस तरह के हैं कि वे आत्म निहित हैं संभव नहीं है? जैसे यदि आपको आवश्यक संसाधनों को क्लासपाथ में कहीं भी रखा जाता है, तो आप उन्हें 'getClass()। getResource (स्ट्रिंग)' के माध्यम से लोड कर सकते हैं। –

+0

@ मार्क पेटर्स, हाँ, यह संभव है। लेकिन इसमें 400-500 परीक्षण अपडेट करना शामिल है, इसलिए मैं उस योजना पर विचार करना चाहूंगा बी – Fredrik

उत्तर

5

मुझे लगता है कि आप आधारित संपत्ति को सेट करने के साथ सही हैं (projects attributes देखें)। हालांकि, चूंकि यह एएनटी (और जेवीएम की नहीं) की संपत्ति है, यह केवल पढ़ने के लिए है!

यदि आप अपने चींटी कार्य को कॉल करते समय आधारर सेट करते हैं तो यह अन्य लक्ष्य को प्रभावित करता है? Command Line reference देखें।

ant -Dbasedir=somedir 

वैकल्पिक रूप से, अपने जूनिट लक्ष्य को कॉल करने के लिए एक नई चींटी प्रक्रिया का विस्तार करें। AntCall task या Ant task देखें। निम्नलिखित उदाहरण मानते हैं कि जूनिट लक्ष्य में आपका जूनिट कार्य होता है। मैं अन्य संपत्तियों के लिए (basedir संपत्ति अब तक की जरूरत कभी नहीं इस कार्य के लिए इस्तेमाल किया।

<antcall target="junit"> 
    <param name="basedir" value="${plugins.dir}/${name}"/> 
</antcall> 

<ant dir="${plugins.dir}/${name}" target="junit" /> 
+0

धन्यवाद। मेरे पास अभी तक यह कोशिश करने का समय नहीं है, लेकिन ऐसा लगता है कि यह मेरी कुछ समस्याओं को हल करेगा, इसलिए मैं इसे उत्तर के रूप में चिह्नित कर रहा हूं। – Fredrik

5

मैं एक ही परिदृश्य था और मेरे मामले में मैंने देखा कि अगर एक ही JVM में चलने वाले dir="...." नजरअंदाज कर दिया है तो मैं बस fork='true' और यह जोड़ा अपाचे के प्रलेखन साइट से काम किया

बोली। "। निर्देशिका -। निर्देशिका जिसमें वीएम आह्वान करने के लिए ध्यान नहीं दिया गया है, तो कांटा अक्षम किया गया है"।।। अधिक here

+0

और बैचटेस्ट भाग पर फोर्क = "सत्य" का भी उपयोग करना न भूलें, क्योंकि यह जूनिट कांटा संपत्ति को ओवरराइट करता है। उसने मेरे लिए चाल बनाई। – dag

1

मैं NetBeans का उपयोग कर रहा जब मैं करने के लिए जोड़ चींटी गुण (उपकरण, विकल्प, जावा, चींटी से) work.dir=C:/MyWorkingDir/ यह निम्न आदेश के साथ ant निष्पादित करता है और बदलता है C:\MyWorkingDir को dir काम कर रहे:

ant -f D:\\workspace\\lib\\project -Dfork=true -Djavac.includes=com/myapp/MyTest.java -Dtest.includes=com/myapp/MyTest.java "-Dwork.dir=C:/MyWorkingDir/" test-single 
संबंधित मुद्दे