2009-05-21 15 views
31

में एकीकरण-परीक्षण लक्ष्य में व्यक्तिगत परीक्षण कैसे चलाएं हमारे पास मेवेन में हमारे एकीकरण-परीक्षण चरण जीवन चक्र के लिए सैकड़ों परीक्षण परिभाषित किए गए हैं, और उन्हें पूरा करने में लंबा समय लगता है।मैवेन

मैं क्या करना चाहता हूं integration-test में केवल एक परीक्षण चलाएं। मैंने करने की कोशिश की:

mvn -Dtest=<my-test> integration-test 

लेकिन यह काम नहीं करता है। -Dtest यूनिट परीक्षण लक्ष्य में केवल परीक्षण चलाता है, न कि एकीकरण-परीक्षण चरण। मैंने इसके बजाय -Dintegration-test=<my-test> की कोशिश की, और इसे अनदेखा कर दिया गया।

क्या ऐसा करने का कोई तरीका है?


मेरे विन्यास है:

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-surefire-plugin</artifactId> 
    <executions> 
     <execution> 
      <id>surefire-it</id> 
      <phase>integration-test</phase> 
      <goals> 
       <goal>test</goal> 
      </goals> 
      <configuration> 
       <excludes> 
        <exclude>none</exclude> 
       </excludes> 
       <includes> 
        <include>**/api/**</include> 
       </includes> 
    ..... 
+0

मैंने अभी अपनी परियोजना पर यह किया है और यह काम किया है। किसी भी मौके पर आप पोम से निश्चित प्लगिंग अनुभाग पोस्ट कर सकते हैं? –

+0

org.apache.maven.plugins Maven-अचूक-प्लगइन अचूक-यह एकीकरण परीक्षण परीक्षण <विन्यास> कोई भी **/api/** ..... – Jalpesh

+0

मैं एक सीमा की वजह से पूरी बात में पोस्ट नहीं कर सकते। लेकिन यह इसका सारांश है। – Jalpesh

उत्तर

2

मैं अपने पोम JUnit बारे में निश्चित नहीं हूँ, लेकिन TestNG के लिए रणनीति केवल एक परीक्षण के साथ एक सूट एक्सएमएल फ़ाइल को परिभाषित किया जाएगा, और उसके बाद केवल इसे चलाने के लिए surefire प्लगइन को कॉन्फ़िगर करें। अपने पोम में, आप कुछ इस तरह होता है (त्याग, इस अपरीक्षित है):

<plugin> 
    <artifactId>maven-surefire-plugin</artifactId> 
    <executions> 
     <execution> 
     <phase>integration-test</phase> 
     <configuration> 
      <suiteXmlFiles> 
      <suiteXmlFile>single-test.xml</suiteXmlFile> 
      </suiteXmlFiles> 
     </configuration> 
     <goals> 
      <goal>run</goal> 
     </goals> 
     </execution> 
    </executions> 
    </plugin> 

सूट फ़ाइल कॉन्फ़िगर करने के लिए देख http://testng.org/doc/documentation-main.html

+0

जैसा ही है, मैं जेम्स से सहमत हूं। टेस्टएनजी इसके लिए उपयुक्त है, लेकिन मुझे लगता है कि टेस्टएनजी समूहों का उपयोग करना बेहतर है: @ टेस्ट (समूह = {"slow_test"}) फिर अपने टेस्टएनजी सूट में: <सूट नाम = "मेरा सूट"> <परीक्षण का नाम = "धीरे परीक्षण"> <नाम शामिल = "slow_test" /> तो फिर तुम हमेशा शामिल हो सकते हैं/विशेष समूहों –

3

मैं इस के माध्यम से संघर्ष किया, और मैं उपयोग करने के लिए एक अतिरिक्त प्रोफ़ाइल बनाया जब मैं सिर्फ एक एकीकरण परीक्षण चलाने के लिए चाहता था। मुझे आशा है कि मैं सफलतापूर्वक सिर्फ सही हिस्सा यहाँ निकाला है:

<profile> 
     <id>integrationTestSingle</id> 
     <build> 
      <plugins> 
       <plugin> 
        <artifactId>maven-surefire-plugin</artifactId> 
        <executions> 
         <execution> 
          <id>surefire-it</id> 
          <phase>integration-test</phase> 
          <goals> 
           <goal>test</goal> 
          </goals> 
          <configuration> 
           <includes> 
            <include>**/integration/**/${test}.java</include> 
           </includes> 
           <skipTests>false</skipTests> 
          </configuration> 
         </execution> 
        </executions> 
        <configuration> 
         <argLine>-Xms256M -Xmx768M -XX:MaxPermSize=256M</argLine> 
        </configuration> 
       </plugin> 

       <plugin> 
        <artifactId>maven-surefire-plugin</artifactId> 
        <executions> 
         <execution> 
          <id>default-test</id>         
          <configuration> 
           <skipTests>true</skipTests> 
          </configuration> 
         </execution> 
        </executions> 

       </plugin> 
      </plugins> 
     </build> 
    </profile> 

अब, मैं integrationTestSingle प्रोफाइल के साथ और -DfailIfNoTests=false -Dtest=NameOfTest साथ Maven कहते हैं, और यह नियमित रूप से "परीक्षण के दौरान नियमित रूप से परीक्षण के किसी भी नहीं चलता है "चरण, और एकीकरण-परीक्षण चरण के दौरान केवल NameOfTest परीक्षण चलाता है।

26

आप Maven failsafe plugin का उपयोग कर रहे हैं, तो आप

mvn -Dit.test=your.TestCase verify 

के माध्यम से एक एकीकरण परीक्षण चलाने the failsafe plugin docs for more info देख सकते हैं।

+1

इस के साथ 2013-07-26 पर मेरे लिए काम किया को बाहर अन्य जवाब कहने के बावजूद प्लगइन संस्करण 2.15 और मेवेन 3.1.0। ऐसा लगता है कि दूसरा जवाब एक बग रहा है। – ArtB

+1

एमवीएन 3.2.5, प्लगइन 2.18 के लिए सत्यापित किया गया। एक एकीकरण परीक्षण चलाता है: mvn एकीकरण परीक्षण -Dit.test = MyClassIT लेकिन यह भी चलाता है इकाई परीक्षण: mvn को सत्यापित -Dit.test = MyClassIT ध्यान रखें कि यह अभी भी इकाई परीक्षण चला सकता है रहो – user77115

+0

। यूनिट परीक्षणों के निष्पादन को बंद करने के लिए '-Dtest = foo -DfailIfNoTests = false' जोड़ें (मानते हुए foo मौजूद नहीं है), https://stackoverflow.com/questions/6612344/prevent-unit-tests-in-maven- लेकिन अनुमति-एकीकरण-परीक्षण। – asmaier

21

Failsafe documentation तुम इतनी तरह परीक्षण निर्दिष्ट होगा:

mvn -Dit.test=BrokenIT verify 

हालांकि, -Dit.test अब किसी भी काम करने के लिए प्रकट नहीं होता। इसके बजाय, एक निश्चित पैरामीटर निश्चित रूप से एक निश्चित पैरामीटर निर्दिष्ट करने के लिए प्रयुक्त होता है जो स्पष्ट रूप से Failsafe के लिए भी काम करेगा।

mvn -Dtest=WorksIT verify 

मैं एक bug दायर किया है (संपादित करें: जो के रूप में 2.12 में "पुनः नहीं दिखा सकते" बंद हो गया) उदाहरण के लिए प्रलेखन सही करने के लिए।

+2

इसे उत्तर के रूप में स्वीकार किया जाना चाहिए। – whaley

+0

बिल्ड-हेल्पर-मेवेन-प्लगइन को ट्रिगर नहीं कर सकता जो परीक्षण वातावरण में प्रवेश करता है। – okwap

+0

@okwap यह आपके प्रोजेक्ट और प्लगइन सेटअप के लिए कुछ विशेष रूप से लगता है, न कि Failsafe/एकीकरण परीक्षण समस्या। – Lyle

0

बस इस में भाग गया। कुछ इस तरह मेरे लिए अच्छी तरह से काम:

mvn -Pintegration-test -Dtest=<my-test> 

चाल सुनिश्चित करना है कि परीक्षण समूह -Dtest भाग पहले उल्लेख किया गया था।

2

बस -DfailIfNoTests=false मेरे साथ testNG के साथ काम करता है। कुछ ऐसा:

mvn integration-test -Dtest=aITest -DfailIfNoTests=false