2017-01-23 14 views
6

मेरे पास एकाधिक मॉड्यूल और एक आम पेरेंट मॉड्यूल के साथ एक मेवेन प्रोजेक्ट है। इस परियोजना में कुछ यूनिट परीक्षण जूनिट के साथ निश्चित रूप से, साथ ही साथ बीडीडी ककड़ी एकीकरण परीक्षण के साथ चलते हैं। मैं दो अलग-अलग नौकरियों को चलाने के लिए, सभी यूनिट परीक्षण चलाने के लिए, और बीडीडी/एकीकरण परीक्षण चलाने के लिए एक चलाऊंगा। ऐसा करने के लिए में, मैं बहुत की तरह एक JUnit श्रेणी एनोटेशन के साथ मेरे BDD धावक कक्षाएं टिप्पणी किए गए:मेवेन के माध्यम से जूनिट श्रेणियों के साथ ककड़ी परीक्षण चलाना

@RunWith(Cucumber.class) 
@CucumberOptions(
       tags = { "@ATagToBeRun", "[email protected]","[email protected]" }, 
       dryRun = false, strict = true, 
       features = "src/test/resources/cucumber/testing", 
       glue = { "com.some.company.test", 
         "com.some.company.another.test"}) 
@Category(value = IntegrationTest.class) 
public class FlowExecutionPojoTest { 
} 

मैं जो maven-surefire-plugin विशेषता यह है कि पर फिल्टर करने के लिए परीक्षण आधार का इरादा है का उपयोग करता है माता पिता pom में एक Maven प्रोफ़ाइल बनाया समूहों।

 <dependencies> 
     <dependency> 
      <groupId>info.cukes</groupId> 
      <artifactId>cucumber-java</artifactId> 
      <version>1.2.4</version> 
      <scope>test</scope> 
     </dependency> 

     <dependency> 
      <groupId>info.cukes</groupId> 
      <artifactId>cucumber-junit</artifactId> 
      <version>1.2.4</version> 
      <scope>test</scope> 
     </dependency> 

     <dependency> 
      <groupId>info.cukes</groupId> 
      <artifactId>cucumber-spring</artifactId> 
      <version>1.2.4</version> 
      <scope>test</scope> 
     </dependency> 
     <dependency> 
      <groupId>info.cukes</groupId> 
      <artifactId>cucumber-jvm-deps</artifactId> 
      <version>1.0.5</version> 
      <scope>test</scope> 
     </dependency> 
    </dependencies> 

    <profile> 
     <id>testJewels</id> 
     <activation> 
      <activeByDefault>true</activeByDefault> 
     </activation> 
     <modules> 
      <module>../my-module</module> 
     </modules> 
     <build> 
      <plugins> 
       <plugin> 
        <groupId>org.apache.maven.plugins</groupId> 
        <artifactId>maven-surefire-plugin</artifactId> 
        <version>2.19.1</version> 
        <configuration> 
         <groups>com.some.company.IntegrationTest</groups> 
        </configuration> 
       </plugin> 
      </plugins> 
     </build> 
    </profile> 

मैं क्या उम्मीद थी कि जब मैं mvn test -PtestJewels श्रेणी <groups> टैग में शामिल के साथ एनोटेट कक्षाएं चलाने निष्पादित किया जाना चाहिए: यहाँ मेरी Maven विन्यास है। वास्तविकता में एनोटेटेड कक्षाओं में से कोई भी निष्पादित नहीं हुआ।

ध्यान देने योग्य एक दिलचस्प बात यह है कि जब मैंने maven-surefire-plugin संस्करण 2.18 का उपयोग किया, तो यह काम किया, लेकिन संस्करण 2.18.1 से और ऐसा नहीं हुआ। पृष्ठ के तल पर documentation के अनुसार, वहाँ में श्रेणियों के बारे में संस्करण 2.18.1 विरासत में मिला जा रहा है, लेकिन मेरे मामले में वे

+1

क्या आप अपनी पोम निर्भरताओं को साझा कर सकते हैं? क्या आपने शामिल किया ककड़ी-जावा, ककड़ी-जूनिट पैकेज? – eg04lt3r

+0

@ eg04lt3r निश्चित बात, इसे प्रश्न में जोड़ा गया – Jewels

उत्तर

2

में किया जा रहा है मुझे पता चला वास्तव में cucumber-jvm भंडार को ठीक करने पर एक pull request है कि वहाँ एक परिवर्तन किया गया यह विशिष्ट समस्या है। समस्या इस तथ्य के परिणामस्वरूप हुई है कि जब जूनिट @Category एनोटेशन के आधार पर परीक्षण धावक कक्षाओं को फ़िल्टर करता है, तो यह सभी बाल वर्गों को भी जांचता है। .feature फ़ाइलों को चलाने वाले ककड़ी परीक्षण के मामले में, .feature फ़ाइलों का प्रतिनिधित्व करने वाले सभी वर्गों की भी जांच की जाती है (ककड़ी FeatureRunner कक्षा के उदाहरण में प्रत्येक .feature फ़ाइल को परिवर्तित करती है)। चूंकि एनोटेशन FeatureRunner कक्षा पर मौजूद नहीं है, परीक्षणों को फ़िल्टर किया जाता है और नहीं चलाया जाता है। (संस्करण 2.18.1 से पहले maven-surefire-plugin ने एनोटेशन के लिए बाल कक्षाओं की जांच नहीं की थी और इसलिए यह कोई समस्या नहीं थी।

एक वर्कअराउंड जो ऊपर वर्णित विशिष्ट सेटअप के लिए काम करता है, जहां सभी बीडीडी परीक्षण चलाए जाते हैं विशिष्ट मॉड्यूल,, बच्चे मॉड्यूल में <groups> विन्यास ओवरराइड इसलिए की तरह था:

<build> 
    <plugins> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-surefire-plugin</artifactId> 
      <configuration> 
       <groups combine.self="override"></groups> 
      </configuration> 
     </plugin> 
    </plugins> 
</build> 

यह स्पष्ट रूप से एक अलग सेटअप में काम नहीं करेगा, और यह इसलिए कि ककड़ी टीम पीआर विलय करने के लिए अभी बाकी है बल्कि दुर्भाग्यपूर्ण है मैंने ऊपर उल्लेख किया है।

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