2012-05-08 8 views
17

का उपयोग कर निर्भरता जार में निहित जुनीट टेस्ट चलाएं मेरे पास मेरे मैवेन रिपोजिटरी में एक जार है जिसमें जुनीट टेस्ट शामिल हैं, जिन्हें विभिन्न परियोजनाओं में चलाया जाना चाहिए, क्योंकि यह परियोजना की जांच करने और इसकी कुछ विशेषताओं के परीक्षण के लिए सक्षम है। अनजाने में surefire एक जार में निहित परीक्षण नहीं उठाता है, क्योंकि यह Feature Request shows है।मैवेन Surefire

फीचर अनुरोध में वे जार को अनपैक करने का प्रस्ताव देते हैं, जिसे निश्चित रूप से निष्पादित किया जाता है।

मैंने मैवेन-निर्भरता-प्लगइन का उपयोग करके जार सफलतापूर्वक अनपॅक किया, लेकिन निहित परीक्षण वैसे भी निष्पादित नहीं किए गए हैं।

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-dependency-plugin</artifactId> 
    <executions> 
     <execution> 
      <id>unpack</id> 
      <phase>process-test-classes</phase> 
      <goals> 
       <goal>unpack</goal> 
      </goals> 
      <configuration> 
       <artifactItems> 
        <artifactItem> 
         <groupId>de.mwx.test</groupId> 
         <artifactId>selenium-test-base</artifactId> 
         <version>0.1</version> 
         <overWrite>true</overWrite> 
          <outputDirectory> 
           ${project.build.directory}/classes 
          </outputDirectory> 
        </artifactItem> 
       </artifactItems> 
      </configuration> 
     </execution> 
    </executions> 
</plugin> 

कोई मदद appriciated किया जाएगा: यह कैसे मैं Maven-निर्भरता-प्लगइन के लिए कॉन्फ़िगर मेरी जार खोल रहा है।

+1

क्यों एक और जार में परीक्षण कर रहे हैं इस चीज लिया? क्या वे आपकी परियोजना के लिए परीक्षण करते हैं, या कोई अन्य? यदि दूसरा, तो आप उन्हें क्यों चला रहे हैं? अगर आपके ऐप के लिए, वे आपकी परियोजना में क्यों नहीं हैं? –

+0

अन्य जार वास्तव में एक परीक्षण ढांचा है जो वर्तमान प्रोजेक्ट पर चल रहा है और विविध कार्यों को निष्पादित करता है। यह मुझे सबसे मॉड्यूलर तरीके की तरह लग रहा था: लेकिन मुझे लगता है कि यह निश्चित रूप से सुनिश्चित करने के लिए इच्छित उपयोग नहीं था। – devsnd

+1

लेकिन मेवेन परियोजनाएं पहले से ही एक परियोजना के परीक्षण के लिए एक मानक परिभाषित करती हैं। और आईएमओ किसी परियोजना को अपने परीक्षणों पर निर्भर करने के लिए समझ में नहीं आता है - यदि कुछ भी हो, परीक्षण परीक्षण के तहत मॉड्यूल पर निर्भर होगा, क्योंकि परीक्षण मॉड्यूल का उपयोग करते हैं, लेकिन इसके विपरीत नहीं। –

उत्तर

28

एक और जार से मेवेन में एक परीक्षण चलाने का एक नया तरीका है। मेवेन-सिक्योरफायर-प्लगइन संस्करण 2.15 से आप परीक्षण के लिए अपने परीक्षण जार स्कैन करने और उन्हें चलाने के लिए मेवेन को बता सकते हैं। आपको परीक्षण जार निकालने की आवश्यकता नहीं है। बस अपने परीक्षण जार करने के लिए एक निर्भरता जोड़ सकते हैं और:

<plugin> 
     <groupId>org.apache.maven.plugins</groupId> 
     <artifactId>maven-surefire-plugin</artifactId> 
     <version>2.15</version> 
     <configuration> 
      <dependenciesToScan> 
       <dependency>test.jar.group:test.jar.artifact.id</dependency> 
      </dependenciesToScan> 
     </configuration> 
    </plugin> 

से https://gist.github.com/aslakknutsen/4520226 और https://issues.apache.org/jira/browse/SUREFIRE-569

+0

पूरी तरह से काम किया, इस अतिरिक्त के लिए धन्यवाद। –

+1

एक आकर्षण की तरह काम किया! टेस्ट-जार पर निर्भरता निर्दिष्ट करते समय भी ( परीक्षण के साथ) – mac

1

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

+0

हां, यही वह परियोजना है जिसके बारे में मैं बात कर रहा हूं। मैं उस बिंदु को और स्पष्ट करने के लिए अपना प्रश्न अपडेट करूंगा। – devsnd

+1

मैं कक्षा फ़ोल्डर के बजाय outputDirectory के रूप में परीक्षण-श्रेणी निर्देशिका का उपयोग करने का सुझाव दूंगा। – khmarbaise

+0

हाँ! वह यह था। धन्यवाद। – devsnd

2

(यह सिर्फ restating है khmarbaise से ऊपर एक टिप्पणी में क्या है, लेकिन जब से यह स्पष्ट किया नहीं था, मुझे लगता है कि यह restating लायक है):

उपयोग परीक्षण वर्गों निर्देशिका के बजाय outputDirectory के रूप में कक्षाएं फ़ोल्डर :

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-dependency-plugin</artifactId> 
    <executions> 
     <execution> 
      <id>unpack</id> 
      <phase>process-test-classes</phase> 
      <goals> 
       <goal>unpack</goal> 
      </goals> 
      <configuration> 
       <artifactItems> 
        <artifactItem> 
         <groupId>de.mwx.test</groupId> 
         <artifactId>selenium-test-base</artifactId> 
         <version>0.1</version> 
         <overWrite>true</overWrite> 
          <outputDirectory> 
           ${project.build.directory}/test-classes 
          </outputDirectory> 
        </artifactItem> 
       </artifactItems> 
      </configuration> 
     </execution> 
    </executions> 
</plugin>