कमांड लाइन से JUnit टेस्ट केस कैसे चलाएं


333

मैं कमांड लाइन से JUnit परीक्षण मामलों को चलाना चाहूंगा। मैं यह कैसे कर सकता हूँ?


इसी तरह के एंड्रॉइड
जूनिट

एंड्रॉइड डॉक्स: डिवाइस या एमुलेटर (कमांड लाइन से) पर परीक्षण चल रहा है । (
andreea.sandu के


javac -cp "junit-4.12.jar; hamcrest-core-1.3.jar;." Tests.javaमेरे लिए काम किया। समाप्ति बिंदु पर ध्यान दें - यह महत्वपूर्ण है!
पारसकर

जवाबों:


274

के लिए JUnit 5.x यह बताया गया है:

java -jar junit-platform-console-standalone-<version>.jar <Options>

Https://stackoverflow.com/a/52373592/1431016 पर एक संक्षिप्त सारांश और https://junit.org/junit5/docs/current/user-guide/#running-tests-console-launcher पर पूर्ण विवरण प्राप्त करें।

के लिए JUnit 4.x यह वास्तव में क्या है:

java -cp .:/usr/share/java/junit.jar org.junit.runner.JUnitCore [test class name]

लेकिन अगर आप JUnit 3.X का उपयोग कर रहे हैं तो ध्यान दें कि कक्षा का नाम अलग है:

java -cp .:/usr/share/java/junit.jar junit.textui.TestRunner [test class name]

आपको अपनी कक्षा की फाइलों के साथ क्लासपैथ में अधिक JAR या निर्देशिकाओं को जोड़ने की आवश्यकता हो सकती है और अर्धविराम (विंडोज) या कॉलन (UNIX / Linux) के साथ अलग कर सकते हैं। यह आपके पर्यावरण पर निर्भर करता है।

संपादित करें: मैंने वर्तमान निर्देशिका को एक उदाहरण के रूप में जोड़ा है। आपके वातावरण पर निर्भर करता है और आप अपने एप्लिकेशन का निर्माण कैसे करते हैं (बिन / या निर्माण कर सकते हैं / या यहां तक ​​कि my_application.jar आदि)। नोट जावा 6+ क्लासपाथ में ग्लब्स का समर्थन करता है, आप कर सकते हैं:

java -cp lib/*.jar:/usr/share/java/junit.jar ...

आशा है ये मदद करेगा। परीक्षण लिखें! :-)


@ आईएजीपी किसी भी विचार को निर्धारित करने के लिए कि क्या एक परीक्षण JUnit4 या JUnit3 का उपयोग कर रहा है?
गोएलर 444

2
मुझे लगता है। यह वर्षों से मैं जावा में आखिरी बार प्रोग्रामिंग कर रहा था ...
लाज़प

और क्या होगा अगर आप Android का उपयोग कर रहे हैं?
n611x007

1
"-Cp" तर्क (यानी CLASSPATH) के लिए प्रलेखन यहां (जावा 7, यूनिक्स) और यहां (ट्यूटोरियल) और यहां (जावा 8, यूनिक्स) और यहां (जावा 8, विंडोज) है । क्लासपाथ में स्पष्ट रूप से वाइल्डकार्ड अब समर्थित हैं।
डेविड टोनहोफर 16

1
Downvote। JUnit 4.x के लिए यह सही नहीं है। आपके निर्देश देते हैं "वर्ग नहीं खोज सका: [परीक्षण वर्ग का नाम]" तब भी जब [परीक्षण वर्ग का नाम] कक्षापथ में है।
फिलिप रेगो

117

मावेन रास्ता

यदि आप मावेन का उपयोग करते हैं, तो आप अपने सभी परीक्षण मामलों को चलाने के लिए निम्न कमांड चला सकते हैं:

mvn clean test

या आप नीचे के रूप में एक विशेष परीक्षण चला सकते हैं

mvn clean test -Dtest=your.package.TestClassName
mvn clean test -Dtest=your.package.TestClassName#particularMethod

यदि आप टारगेट ट्रेस (यदि कोई है) को टारगेट \ n रिपोर्ट-रिपोर्ट फ़ोल्डर में रिपोर्ट फ़ाइलों के बजाय कंसोल में देखना चाहते हैं, तो उपयोगकर्ता गुण अचूक। उदाहरण के लिए:

mvn clean test -Dtest=your.package.TestClassName -Dsurefire.useFile=false

तरक्की का रास्ता

यदि आप ग्रैडल का उपयोग करते हैं, तो आप अपने सभी परीक्षण मामलों को चलाने के लिए निम्नलिखित कमांड चला सकते हैं:

gradle test

या आप नीचे के रूप में एक विशेष परीक्षण चला सकते हैं

gradle test --tests your.package.TestClassName
gradle test --tests your.package.TestClassName.particularMethod

यदि आप अधिक जानकारी चाहते हैं, तो आप विकल्पों पर विचार कर सकते हैं जैसे --stacktrace, या --info, या --debug।

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

gradle test --info

यदि आप समग्र परीक्षा परिणाम देखना चाहते हैं, तो आप ब्राउज़र में रिपोर्ट खोल सकते हैं, उदाहरण के लिए (उबंटू में Google क्रोम का उपयोग करके इसे खोलें):

google-chrome build/reports/tests/index.html

चींटी का रास्ता

एक बार जब आप अपनी Ant build file build.xml सेट कर लेते हैं, तो आप अपने JUnit परीक्षण के मामलों को कमांड लाइन से नीचे के रूप में चला सकते हैं:

ant -f build.xml <Your JUnit test target name>

आप एंट बिल्ड फ़ाइल में JUnit परीक्षणों को कॉन्फ़िगर करने के तरीके के बारे में अधिक पढ़ने के लिए नीचे दिए गए लिंक का अनुसरण कर सकते हैं: https://ant.apache.org/manual/Tasks/junit.html

सामान्य तरीका है

यदि आप मावेन, या ग्रैडल या एंट का उपयोग नहीं करते हैं, तो आप निम्नलिखित तरीके अपना सकते हैं:

सबसे पहले, आपको अपने परीक्षण मामलों को संकलित करने की आवश्यकता है। उदाहरण के लिए (लिनक्स में):

javac -d /absolute/path/for/compiled/classes -cp /absolute/path/to/junit-4.12.jar /absolute/path/to/TestClassName.java

फिर अपने परीक्षण मामलों को चलाएं। उदाहरण के लिए:

java -cp /absolute/path/for/compiled/classes:/absolute/path/to/junit-4.12.jar:/absolute/path/to/hamcrest-core-1.3.jar org.junit.runner.JUnitCore your.package.TestClassName

1
मुझे यह पसंद है कि इस उत्तर में कई तकनीकों, कुडोस के उदाहरण हैं!
जोसी थॉमसन

पिछले दृष्टिकोण का उपयोग कर ग्रूवी परीक्षणों के बारे में क्या?
मिडोरी

1
अच्छी तरह से सोने का बिल्ला लायक;)
एरिक डुमिनील

धरातल के लिए संस्करण के लिए धन्यवाद! कुडोस!
ady

52

@Lzap ने जो जवाब दिया वह एक अच्छा समाधान है। हालाँकि, मैं यह जोड़ना चाहूंगा कि आपको जोड़ना चाहिए। वर्ग पथ के लिए, ताकि आपकी वर्तमान निर्देशिका बाहर न रह जाए, जिसके परिणामस्वरूप आपकी अपनी कक्षाएं छोड़ दी जाएंगी। कुछ प्लेटफार्मों पर मेरे साथ ऐसा हुआ है। तो JUnit 4.x के लिए एक अद्यतन संस्करण होगा:

java -cp .:/usr/share/java/junit.jar org.junit.runner.JUnitCore [test class name]

1
यह एक अर्ध उपनिवेश माना जाता है?
पन्ना

14
@ यह विंडोज पर एक अर्धविराम है। N * nix पर्यावरण (कम से कम OSX और मेरे द्वारा उपयोग किए गए सभी लिनक्स डिस्ट्रोस) पर आप एक कोलन का उपयोग करते हैं।
rand_acs

1
@rand_acs टेस्ट क्लास के नाम को पूरी तरह से वर्गीकृत क्लास नाम की आवश्यकता है?
गोलरिको ४४४ १०'१३ १२:०२

1
@ Goaler444 हां, मैं हमेशा पूर्ण नाम का उपयोग करता हूं, जिसमें निर्दिष्ट सभी नाम स्थान हैं।
rand_acs

22

सुनिश्चित करें कि JUnit.jar आपके क्लासपाथ में है, फिर कंसोल से कमांड लाइन धावक को आमंत्रित करें

java org.junit.runner.JUnitCore [परीक्षण वर्ग का नाम]

संदर्भ: जूनिट FAQ


4
आपको अपनी परियोजना के बाकी वर्गपथ को स्थापित करने की भी आवश्यकता है।
थिलो

यह सिर्फ "क्लास नहीं खोज सका: [टेस्ट क्लास का नाम]" तब भी जब क्लास क्लास में [टेस्ट क्लास का नाम] है।
फिलिप रेगो

19

4.12 JUnit के साथ मेरे लिए निम्नलिखित काम नहीं किया:

java -cp .:/usr/share/java/junit.jar org.junit.runner.JUnitCore [test class name]

जाहिर है , JUnit 4.11 के बाद से आपको hamcrest-core.jarअपने वर्गपथ में भी शामिल करना चाहिए :

java -cp .:/usr/share/java/junit.jar:/usr/share/java/hamcrest-core.jar org.junit.runner.JUnitCore [test class name]

JUnit 4.12 के साथ एक ही मुद्दा था। इसी तरह के एक समाधान के साथ आया था, लेकिन यह मेरे लिए काम नहीं किया, JUnitCore को लोड करने में विफल रहा। मैंने मूल रूप से JUnit 4.8.2 पर स्विच किया है क्योंकि इसमें क्लासपैथ में हैमरेस्ट-कोर.जर शामिल करने की आवश्यकता नहीं है।
व्लादिमीर नज़रेंको

पुष्टि की गई कि यह JUnit 4.12 के साथ किया जाना चाहिए। +1।
रायरेंग

इसने मेरे लिए काम किया:java -cp .:/usr/share/java/junit4.jar org.junit.runner.JUnitCore [test class name]
रफ़ी खाचदौरेन

11

खिड़कियों में यह है

java -cp .;/path/junit.jar org.junit.runner.JUnitCore TestClass [परीक्षण वर्ग का नाम .class एक्सटेंशन के बिना]

उदाहरण के लिए: c:\>java -cp .;f:/libraries/junit-4.8.2 org.junit.runner.JUnitCore TestSample1 TestSample2 ...और इसी तरह, यदि किसी के पास एक से अधिक परीक्षण कक्षाएं हैं।

-cp क्लास के पथ के लिए खड़ा है और डॉट (।) मौजूदा क्लासपैथ का प्रतिनिधित्व करता है, जबकि सेमी कॉलोन (?) क्लास के लिए अतिरिक्त दिए गए जार को जोड़ता है, जैसा कि ऊपर दिए गए उदाहरण में junit-4.8.2 अब JUnitCore क्लास को निष्पादित करने के लिए क्लासपैथ में उपलब्ध है। यहां हमने अपनी परीक्षा कक्षाओं को निष्पादित करने के लिए उपयोग किया है।

ऊपर कमांड लाइन स्टेटमेंट आपको कमांड प्रॉम्प्ट (यानी MSDos) से जूनिट (संस्करण 4+) परीक्षण निष्पादित करने में मदद करता है।

नोट: JUnitCore जूनिट परीक्षणों को निष्पादित करने का एक पहलू है, यह मुखौटा जूनियर के 4+ संस्करणों में शामिल है।


कृपया अपना उत्तर बहुत संक्षेप में समझाएं।
मोहित जैन

मैंने आपको अपना उत्तर संक्षिप्त रखने के लिए नहीं कहा। मैंने कुछ स्पष्टीकरण (कम से कम संक्षिप्त विवरण) जोड़ने का अनुरोध किया। यह समझाने के लिए एक अच्छा अभ्यास है कि आपका उत्तर कैसे काम करता है। पाठक इसे समझ सकते हैं, इसे पसंद कर सकते हैं।
मोहित जैन

तो अगर मैं एक पूरक परीक्षण जार और वेनिला जूनिट जार था, तो ईद के लिए जावा-कमांड कमांड में उन दोनों को कुछ भी करने के लिए वास्तव में काम करना होगा? वहाँ एक तरह से चारों ओर एक कमांड लाइन में रखने के लिए इतना है कि मैं इतना सामान टाइप नहीं है?
1922 में अनगेहेउर

5

वास्तव में आप जूनिट टेस्ट को एक रन करने योग्य जार बना सकते हैं और रन करने योग्य जार को जावा -जर कह सकते हैं


2
ग्रहण में, अपने JUnit प्रोजेक्ट पर राइट क्लिक करें -> एक्सपोर्ट पर क्लिक करें -> Java चुनें-> Runnable Jar File
Indraneel

4

यदि आपका प्रोजेक्ट मावेन-आधारित है तो आप टेस्ट-क्लास कस्टमटेस्ट से सभी टेस्ट-मेथड चला सकते हैं, जो अगली कमांड का उपयोग करके मॉड्यूल 'माय-मॉड्यूल' से संबंधित है:

mvn clean test -pl :my-module -Dtest=CustomTest

या अगले आदेश का उपयोग करके टेस्ट-क्लास कस्टमटेस्ट से केवल 1 टेस्ट-विधि myMethod चलाएं:

mvn clean test -pl :my-module -Dtest=CustomTest#myMethod

इस क्षमता के लिए आपको Maven Surefire Plugin v.2.7.3 + और Junit 4 की आवश्यकता है। अधिक जानकारी यहाँ है: http://maven.apache.org/surefire/maven-surefire-plugin/examples/single-test.html


4

व्यक्तिगत रूप से मैं ऐसा करने के लिए मावेन अचूक ज्यूनिट धावक का उपयोग करूंगा।



-1

यदि आप प्रोजेक्ट चींटी आधारित हैं, तो आपको कंसोल से कुछ ऐसा करने में सक्षम होना चाहिए:

ant test

यदि यह काम नहीं करता है, लेकिन फिर भी आपकी परियोजना चींटी आधारित है, तो आप ant -pपरियोजना के मुख्य लक्ष्यों को सूचीबद्ध करने के लिए दौड़ सकते हैं ।


2
Q का ant
accuya

3
इसलिए मैंने कहा "अगर आपका प्रोजेक्ट चींटी आधारित है"। यह भी ध्यान दें कि ओपी चींटी के बारे में नहीं जान सकता है।
चेरोविम

मेरे पास यह डिल्मा था, इकाई परीक्षण फाइलें फ़ोल्डर में ग्रहण द्वारा स्रोत के रूप में चिह्नित नहीं थीं। यह परियोजना निर्माण के लिए चींटी का उपयोग करती है, यह उन JUnit परीक्षणों को चलाने का उचित तरीका था।
आंद्रेजे रहमान
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.