2011-01-22 12 views
16

मेरे पास एक build.xml है जो मुझे जूनिट परीक्षण चलाने की अनुमति देता है।चींटी क्लासपाथ और junit.jar

<pathelement location="${eclipse.home}/plugins/org.junit4_4.5.0.v20090824/junit.jar"/> 

परिवर्तन classpath टूट जाता है के साथ

<pathelement location="../../../../../eclipse/plugins/org.junit4_4.5.0.v20090824/junit.jar"/> 

:

<path id="JUnit 4.libraryclasspath"> 
    <pathelement location="../../../../../eclipse/plugins/org.junit4_4.5.0.v20090824/junit.jar"/> 
    <pathelement location="../../../../../eclipse/plugins/org.hamcrest.core_1.1.0.v20090501071000.jar"/> 
</path> 
<path id="MyProject.classpath"> 
    <pathelement location="bin"/> 
    <path refid="JUnit 4.libraryclasspath"/> 
</path> 

<target name="run_unit_tests" depends="build"> 
     <mkdir dir="${junit.output.dir}"/> 
     <junit printsummary="yes" haltonfailure="no"> 
      <classpath refid="MyProject.classpath" /> 

      <formatter type="xml"/> 
      <batchtest todir="${junit.output.dir}"> 
        <fileset dir="${src}"> 
          <include name="**/*Test*.java"/> 
        </fileset> 
      </batchtest> 
     </junit> 
</target> 

अगर मैं लाइन की जगह: यहाँ प्रासंगिक हिस्सा है। मुझे निम्न त्रुटि मिलती है:

The <classpath> for <junit> must include junit.jar if not in Ant's own classpath

जहां तक ​​मैं समझता हूं, स्थान विशेषता दोनों मामलों में समान मान रखनी चाहिए। तो कारण क्या हो सकता है?

एक साइड सवाल के रूप में, यह बिल्ड फ़ाइल विभिन्न जूनिट संस्करण (पथ टूट जाएगा) के साथ पर्यावरण पर काम नहीं करेगी। क्या junit.jar के लिए "सामान्य" पथ जोड़ना संभव है?

+0

eclipse.home ठीक से विस्तारित है? $ {Eclipse.home} के लिए –

उत्तर

24

जहां भी आप इसे रहने के लिए कहते हैं, जुनीट लाइब्रेरी रहता है। व्यक्तिगत रूप से, मैं पूरी तरह से ग्रहण के साथ भेजे गए जार फ़ाइलों और download the jars directly के साथ जोड़ने के बारे में भूल जाऊंगा।

यदि मेरे पास कोई प्रोजेक्ट है, तो पथ /project पर कहें तो मैं उस पदानुक्रम में निर्भरता को कहीं भी /project/test/lib/junit.jar पर रखने की कोशिश करूंगा। अगर मेरी चींटी बिल्ड फ़ाइल /project/build.xml है तो यह जुनीट क्लासपाथ में ./test/lib/junit.jar जोड़ने के समान सरल है। विशेष रूप से जब संबंधित पथ का उपयोग कर (के बाद से अपनी परियोजना सामग्री भीकहीं भी संग्रहित किया जा सकता) आपकी मशीन पर एक मनमाना स्थान को संदर्भित कर रहा, नाजुक है (याद रखें, ग्रहण कहीं भी स्थापित किया जा सकता है)।

4

यदि आप लिनक्स पर हैं तो आप हमेशा अपने जार को दूसरे स्थान पर सिमंक कर सकते हैं। इस तरह आप इसे उस पथ पर सिमलिंक कर सकते हैं जिसमें संस्करण शामिल नहीं है। उदाहरण के लिए:

ln -s plugins/org.junit4_4.5.0.v20090824/junit.jar /wherever/junit.jar 

आप ग्रहण उपनिर्देशिका के बाहर पुस्तकालय फ़ोल्डर रखना चाहते हैं। आप अपनी निर्भरताओं को प्रबंधित करने के लिए ivy या मेवेन का उपयोग करने पर भी विचार कर सकते हैं।

मुझे यकीन नहीं है कि आपका उपरोक्त उदाहरण विफल क्यों होता है, लेकिन त्रुटि संदेश का तात्पर्य है कि junit.jar नहीं मिला है। क्या आप सुनिश्चित हैं कि eclipse.home सेट है? आप इसे प्रतिबिंबित कर सकते हैं:

<echo message="${eclipse.home}"> 
+0

+1। अब मैं build.xml स्क्रिप्ट्स लिख सकता हूं जो हार्ड-कोडिंग के हैक की बजाय ग्रहण प्लगइन्स से अपेक्षाकृत लिंक करते हैं या परियोजना में libs की प्रतिलिपि बनाते हैं। – jmort253

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