2010-01-18 11 views
8

के माध्यम से मैं परीक्षण संरचना निम्नलिखित है:भागो परीक्षण Maven

public class WorkerServiceTest { 

    public class RaiseErrorTest extends AbstractDbUnitTest{ 
     @Test 
     public void testSomething(){ 
     } 

     ... 
    } 

    ... 
} 

यह किया है क्योंकि मैं हर परीक्षण का मामला AbstractDbUnitTest देने के लिए एक अलग वर्ग फ़ाइल बनाने के लिए नहीं करना चाहती।

समस्या यह है कि mvn test मेरी आंतरिक कक्षा से परीक्षण नहीं चलाता है। क्या ऐसे परीक्षण चलाने के लिए Maven को कॉन्फ़िगर करने का कोई तरीका है? निस्संदेह मैं आंतरिक कक्षा के तरीकों को बुलाते हुए अभिभावक वर्ग में विधियां बना सकता हूं लेकिन मुझे एक स्पष्ट तरीका चाहिए।

उत्तर

9

हाँ, इस नए (ठीक है, इसे अब कोई नई बात नहीं है) Enclosed धावक का उपयोग कर (JUnit 4.5 के बाद से) संभव है कि रन एक बाहरी वर्ग के सभी स्थिर इनर क्लासों।

इसका उपयोग करने के लिए, बाहरी वर्ग को केवल @RunWith(Enclosed.class) के साथ एनोटेट करें और आंतरिक कक्षाएं स्थिर बनाएं।

@RunWith(Enclosed.class) 
public class WorkerServiceTest { 

    public static class RaiseErrorTest extends AbstractDbUnitTest{ 
     @Test 
     public void testSomething(){ 
     } 

     ... 
    } 

    ... 
} 

और mvn test उन्हें चलाएगा।

+0

मैं इसे मैवेन 3.0.4 और जूनिट 4.11 के साथ कोशिश कर रहा हूं और अभी भी काम नहीं करता है। एक्लिप्स से ठीक काम करता है, लेकिन 'एमवीएन टेस्ट' के साथ नहीं। कोई विचार? '<विन्यास> ' विवरण: – Chirlo

+0

मेरे लिए क्या काम करता है, "Maven-अचूक-प्लगइन" के विन्यास को संशोधित करने के था ... मैं निम्नलिखित विन्यास डाल [यहां] (http://maven.apache.org/surefire/maven-surefire-plugin/test-mojo.html) –

+0

@ करलिटोसवे क्या आप कुछ विवरण दे सकते हैं, यह आपकी टिप्पणी में नहीं दिख रहा है। मैंने src/main/java सहित कोशिश की, और यह अभी भी काम नहीं करता है। धन्यवाद। –

4

मैं समझाता (एक छोटे से अधिक) समाधान है कि मैंने पाया ...

Maven (AFAIK) डिफ़ॉल्ट रूप से प्लगइन "Maven-अचूक-प्लगइन" किसी भी परीक्षण अपने Maven परियोजना में परिभाषित चलाने के लिए उपयोग करता है। इस प्लगइन के documentation के अनुसार, डिफ़ॉल्ट रूप से, इसमें आंतरिक स्थैतिक कक्षाओं में संलग्न परीक्षण शामिल नहीं होते हैं (या कम से कम यह संस्करण के साथ था जिसका उपयोग मैं कर रहा हूं - 2.18.1)।

तो मैंने एक खाली बहिष्कार नियम डालने के लिए क्या किया था; जिसके परिणामस्वरूप एक पोम का निर्माण खंड होता है:

<build> 
    <plugins> 
    ... 
    <!-- ~~~~~~~~~~ SUREFIRE --> 
    <plugin> 
     <groupId>org.apache.maven.plugins</groupId> 
     <artifactId>maven-surefire-plugin</artifactId> 
     <version>2.18.1</version> 
     <configuration> 
     <excludes> 
      <exclude></exclude> 
     </excludes> 
     </configuration> 
    </plugin> 
    ... 
    </plugins> 
</build> 
+0

यह काम किया !!! मैंने निश्चित रूप से 2.19 का उपयोग किया, लेकिन मुझे शक है कि यह एक मुद्दा था। मैं, निश्चित रूप से, परीक्षण स्रोत निर्देशिका को बदलना पड़ा। धन्यवाद। –

+0

अधिक विशेष रूप से प्रलेखन [शामिल] (http://maven.apache.org/surefire/maven-surefire-plugin/test-mojo.html#includes) अनुभाग में पाया जा सकता है। हालांकि मुझे लगता है कि पसंदीदा तरीका 'संलग्न' धावक का उपयोग करना होगा। – Brice

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