2014-07-01 5 views
12

परंतु परीक्षण वर्गों और JUnit classpath पर दोनों कर रहे हैं, एक कमांड लाइन से JUnit परीक्षण इस प्रकार चला सकते हैं:क्या आप कमांड लाइन से पैकेज में सभी JUnit परीक्षणों को स्पष्ट रूप से सूचीबद्ध किए बिना चला सकते हैं?

java org.junit.runner.JUnitCore TestClass1 TestClass2 

अब, वहाँ एक पैकेज में सभी परीक्षण चलाने के लिए एक रास्ता है (और उप पैकेज) भी?

मैं की तरह

java org.junit.runner.JUnitCore com.example.tests.testsIWantToRun.* 

कुछ के लिए देख रहा हूँ कि ऐसा करने का एक आसान तरीका (कि Maven या चींटी शामिल नहीं है) है?

+0

मैं निरंतर एकीकरण सर्वर पर पैकेज और उसके उप-पैकेज में सभी परीक्षणों को चलाने के लिए चाहता हूं, और मुझे नहीं पता कि कौन से पैकेज और परीक्षण गोद लेने वाले सेट अप करना चुनेंगे। लेकिन मैं उन सभी को नहीं चला सकता, क्योंकि एक निश्चित पैकेज में परीक्षण उस बॉक्स पर लात नहीं किया जाना चाहिए। कुछ भी जिसके लिए मैन्युअल रूप से परीक्षणों की सूची बनाने की आवश्यकता होती है, इस प्रकार आदर्श नहीं है (जब तक ऐसी सूची पूरी तरह बहिष्कार नहीं हो सकती)। – Christian

+0

संभव डुप्लिकेट [मैं गतिशील रूप से जुनीट 4 में टेस्ट सूट कैसे बना सकता हूं?] (Http://stackoverflow.com/questions/3257080/how-do-i- गतिशील रूप से-create-a-test-suite-in-junit -4) – Christian

+0

मुझे प्रारंभिक प्रतिक्रिया मिलने के बाद मेरे अपने प्रश्न के उत्तर मिल गए; वे नीचे मेरे जवाब से जुड़े हुए हैं। मैंने इसे डुप्लिकेट के रूप में बंद करने के लिए अभी भी एक वोट शुरू कर दिया है। – Christian

उत्तर

9

जुनीट आपको suites परीक्षणों को परिभाषित करने देता है। प्रत्येक सूट परीक्षणों के संग्रह को परिभाषित करता है, और सूट चलाने से सभी परीक्षण चलने का कारण बनता है। मैं क्या कोई भी उप-पैकेज के लिए सूट के साथ है कि पैकेज के लिए परीक्षण कक्षाओं लिस्टिंग, प्रत्येक पैकेज के लिए एक सूट परिभाषित करने के लिए है:

package com.foo.bar; 

import org.junit.runner.RunWith; 
import org.junit.runners.Suite; 

import com.foo.bar.baz.Suite_baz; 

@RunWith(Suite.class) 
@Suite.SuiteClasses({ 
    ThisTest.class, 
    ThatTest.class, 
    TheOtherTest.class, 
    Suite_baz.class, 
}) 
public class Suite_bar { 
} 

यह पूरी तरह से सरल नहीं है। आपको सूट का निर्माण करना होगा और उन्हें मैन्युअल रूप से नए टेस्ट क्लास के साथ अपडेट करना होगा। मुझे लगता है कि अगर कोई चाहें तो इसे स्वचालित रूप से उत्पन्न करने के लिए थोड़ा जावा प्रोग्राम लिखना मुश्किल नहीं होगा।

2

मैंने इस सवाल से जेनकिंस पर एक परियोजना के ककड़ी परीक्षणों को चुनिंदा रूप से बंद करने में सक्षम होने के लिए कहा, वास्तव में यह जानने के बिना कि उनके रनटेस्ट कक्षाओं को क्या कहा जाएगा, उनके ककड़ी विकल्प क्या होंगे, या वे कहां स्थित होंगे।

उन का उपयोग करना, मैं इस प्रकार मेरी ककड़ी परीक्षण बंद व्यक्तिगत रूप से किक कर सकते हैं::

मैं इस बीच में StackOverflow पर कुछ उपयोगी सूत्र है, जो मेरे सवाल का जवाब मिल गया

सबसे पहले, मैंने एक जार में पैक किए गए परीक्षण प्राप्त करने के लिए मेवेन असेंबली प्लगइन का उपयोग किया: https://stackoverflow.com/a/574650/2018047

तब मैं परीक्षण 'निर्भरता जेनकींस पर लक्ष्य फ़ोल्डर के लिए, जैसा कि यहाँ दिखाया कॉपी किया: https://stackoverflow.com/a/23986765/2018047

हम पहले से ही एक ध्वज है कि हमारे परीक्षण के निष्पादन को छोड़ देता है जब यह सेट है, तो मैं उन्हें चलने के बिना मेरी परीक्षण पैकेज : mvn clean install -DskipMyTestModule=true

और ऊपर से कोड और नीचे से मंगलाचरण का उपयोग कर, मैं यह सब काम करने के लिए सक्षम हो जाएगा ...

java -Dcucumber.options="src/test/resources/features --tags @b --format pretty:STDOUT --format html:target/cucumber-b --format json:target/cucumber-b.json" -Dname=value -cp target/artifact-1.2.8-SNAPSHOT-tests.jar;target/test-classes/libs/junit-4.11.jar;target/test-classes/libs/* org.junit.runner.JUnitCore com.example.foo.bar.test.cucumber.RunTest 

आशा यह भविष्य में किसी को मदद मिलती है। :)

1

जुनीट 4 के साथ यह cpsuite नामक एक्सटेंशन का उपयोग करके समर्थित है।

package com.mycompany; 
import org.junit.extensions.cpsuite.ClasspathSuite; 
import org.junit.runner.RunWith; 

@RunWith(ClasspathSuite.class) 
@ClasspathSuite.IncludeJars(true) 
public class RunAllTests {} 

और इसे चलाने:

java -cp ${CP} org.junit.runner.JUnitCore com.mycompany.RunAllTests 

अपने classpath ${CP} अपने परीक्षण जार को शामिल करना चाहिए तुम सब करने की ज़रूरत है, अपने परीक्षण classpath (Maven io.takari.junit:takari-cpsuite) में जोड़ना एक गतिशील टेस्ट स्वीट वर्ग बनाने है , जूनिट, हैमक्रिस्ट और सीपीएसयूइट।

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