2012-08-08 16 views
34

क्या सभी परीक्षणों को छोड़ने के लिए कुछ कमांड लाइन तर्क प्रदान करने का कोई तरीका है लेकिन कुछ मॉड्यूल पर? तो मुझे हर बार pom.xml बदलने की आवश्यकता नहीं होगी जब मुझे एक और परीक्षण चलाने की आवश्यकता होगी?maven :: बहु-मॉड्यूल प्रोजेक्ट में केवल एक ही परीक्षण चलाएं

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

शायद यह नहीं है कि सीआई का उपयोग कैसे किया जाना है, लेकिन फिर भी।

+0

क्या आप इस विषय को देखा? http://stackoverflow.com/questions/1873995/run-a-single-test-method-with-maven और यहां कुछ और: http://maven.apache.org/plugins/maven-surefire-plugin/examples/ इनके अलावा एकल-test.html मुझे नहीं मिला। –

+9

@ MaunoV.Actually अगर कई मॉड्यूल हैं, तो परीक्षण विफल हो जाएगा। मुझे समाधान मिला: -Dtest = TestName -DfailIfNoTests = false – jdevelop

उत्तर

49

मुझे लगता है कि आपने running a single test under surefire के बारे में दस्तावेज़ पढ़े हैं? क्या वे आपको बता नहीं है कि कैसे करना है एक उप मॉड्यूल में है:

mvn test -Dtest=testname -pl subproject 

कहाँ subproject कि परीक्षण युक्त परियोजना है। एमवीएन मैन पेज से:

-pl, - परियोजनाएं सभी परियोजनाओं के बजाय निर्दिष्ट रिएक्टर परियोजनाओं की कॉमा-सीमांकित सूची का तर्क करती हैं। एक परियोजना [groupId] द्वारा निर्दिष्ट की जा सकती है: artifactId या इसके सापेक्ष पथ से।

mvn test -DfailIfNoTests=false -Dtest=testname -pl subproject 

संदर्भ:

+0

मेरी इच्छा है कि सबप्रोजेक्ट निर्दिष्ट किए बिना इसे करने का कोई तरीका था इसलिए मुझे इसके बारे में सोचना नहीं है (मैं इसके लिए बैश कर सकता हूं लेकिन यह बदसूरत है) –

+15

यह मॉड्यूल का परीक्षण करने के लिए समाधान अन्य उपप्रोजेक्ट्स पर निर्भर करता है तो समाधान काम नहीं करता है। – Vadzim

+3

@ वाडज़िम, मेरे लिए यह '-DfailIfNoTests = false' का उपयोग करने में मदद करता है:' mvn test -Dtest = testname -DfailIfNoTests = false' – Abdull

4

अन्य उत्तर मैं पूरी तरह से पूरा, परियोजनाओं के लिए नहीं कर रहे हैं यह बनाया जाने वाला अन्य उप-मॉड्यूल पर निर्भर करता है। ~/.m2/... में जरूरी जार स्थापित करने के लिए mvn install चलाने का एक विकल्प है, लेकिन यह विकल्प बहुत "साफ" नहीं है।

निम्नलिखित आदेश उप-मॉड्यूल का निर्माण करेगा, और निर्दिष्ट केवल परीक्षण वर्ग चलाएगा। यह पैरेंट मॉड्यूल स्तर पर चलाना है। इसके अलावा, उप-मॉड्यूल नाम निर्दिष्ट करने की कोई आवश्यकता नहीं है।

mvn test -DfailIfNoTests=false -Dtest={test_class_name} -am 

एक अलग रूप में के रूप में, यह भी mvn clean test -Dfa..... हो सकता है। परीक्षण चलाने पर हमेशा clean चलाने की मेरी निजी आदत है।

संदर्भ ..
-am अन्य सभी उप-मॉड्यूल बनाएगा।
-DfailIfNoTests=false पूरी प्रक्रिया में विफल नहीं होता है क्योंकि हम अन्य मॉड्यूल में परीक्षण चलाने का इरादा नहीं रखते हैं।
-pl विकल्प की आवश्यकता नहीं है क्योंकि -am पहले से ही सब कुछ बना रहा है

+0

धन्यवाद! यह मेरे लिए काम किया! –

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