2013-02-18 9 views
5

1 वाक्य में समस्या: "Cobertura सही कोड कवरेज का उत्पादन नहीं करता"रिश्ता

नीचे मेरी pom.xml फ़ाइल

<?xml version="1.0" encoding="UTF-8"?> 
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" 
     xmlns="http://maven.apache.org/POM/4.0.0" 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> 
    <modelVersion>4.0.0</modelVersion> 
    <groupId>a.b.c</groupId> 
    <artifactId>MyProject</artifactId> 
    <version>1.0.0-SNAPSHOT</version> 
    <packaging>war</packaging> 
    <repositories> 
     <repository> 
      <id>google-api-services</id> 
      <url>http://google-api-client-libraries.appspot.com/mavenrepo</url> 
     </repository> 
    </repositories> 
    <properties> 
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
     <java-version>1.6</java-version> 
     <maven.test.skip.exec>false</maven.test.skip.exec> 
     <cobertura-maven-plugin.version>2.5.2</cobertura-maven-plugin.version> 
    </properties> 
    <build> 
     <plugins> 
      <plugin> 
       <groupId>com.google.appengine</groupId> 
       <artifactId>appengine-maven-plugin</artifactId> 
       <version>1.7.4</version> 
      </plugin> 
      <plugin> 
       <artifactId>maven-war-plugin</artifactId> 
       <version>2.1.1</version> 
       <extensions>false</extensions> 
       <configuration> 
        <failOnMissingWebXml>false</failOnMissingWebXml> 
       </configuration> 
      </plugin> 
      <plugin> 
       <artifactId>maven-compiler-plugin</artifactId> 
       <version>3.0</version> 
       <configuration> 
        <source>${java-version}</source> 
        <target>${java-version}</target> 
        <encoding>${project.build.sourceEncoding}</encoding> 
       </configuration> 
      </plugin> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-surefire-plugin</artifactId> 
       <version>2.1.3</version> 
       <configuration> 
        <testFailureIgnore>false</testFailureIgnore> 
       </configuration> 
      </plugin> 
      <plugin> 
       <groupId>org.codehaus.mojo</groupId> 
       <artifactId>cobertura-maven-plugin</artifactId> 
       <version>${cobertura-maven-plugin.version}</version> 
       <configuration> 
        <formats> 
         <format>xml</format> 
         <format>html</format> 
        </formats> 
        <check/> 
       </configuration> 
       <executions> 
        <execution> 
         <goals> 
          <goal>cobertura</goal> 
         </goals> 
        </execution> 
       </executions> 
      </plugin> 
     </plugins> 
    </build> 
    <reporting> 
     <plugins> 
      <plugin> 
       <groupId>org.codehaus.mojo</groupId> 
       <artifactId>cobertura-maven-plugin</artifactId> 
       <version>${cobertura-maven-plugin.version}</version> 
      </plugin> 
     </plugins> 
    </reporting> 
    <dependencies> 
     ... 
    </dependencies> 
</project> 

है जब मैं इस के साथ निर्माण करने का प्रयास पोम, 2 बातें होती

  1. सभी परीक्षणों 2 बार चलाने
  2. युद्ध का उत्पादन किया है
  3. Cobertura रिपोर्ट 0% कवरेज

से पता चलता कृपया मुझे इस मुद्दे को डीबग करने में मदद।

+1

क्या सटीक 'mvn' आदेश है (और पैरामीटर) में Cobertura है कि आप उपयोग? – palacsint

+0

'एमवीएन क्लीन इंस्टॉल' – JAM

+0

मैं 'mvn क्लीन कोबर्टूरा को स्थापित करने का प्रयास करूंगा: cobertura' – palacsint

उत्तर

2

पहली चीजें जो मुझे पता है कि आप maven-surefire-plugin (2.1.3 जो 2006 के बारे में है!) का एक बेहद पुराना संस्करण उपयोग कर रहे हैं, लेकिन वर्तमान संस्करण 2.13 है।

इसके अलावा आप पैकेजिंग चरण कोबर्टुरा के साथ पैकेज चरण में cobertura-maven-plugin को बाध्य कर चुके हैं जो कि गलत है।

सबसे अच्छा पहली बार अपने सेटअप आसान बनाने और इसे चलाने के जो सिर्फ एक संपत्ति में Cobertura-Maven-प्लगइन का संस्करण निर्धारित करने का मतलब हो और रिपोर्टिंग इस तरह क्षेत्र में सेटअप करना है:

<properties> 
    <cobertura-maven-plugin.version>2.5.2</cobertura-maven-plugin.version> 
    </properties> 

और रिपोर्टिंग क्षेत्र में निम्नलिखित:

<project> 
    .. 
    <reporting> 
    <plugins> 
     <plugin> 
     <groupId>org.codehaus.mojo</groupId> 
     <artifactId>cobertura-maven-plugin</artifactId> 
     <version>${cobertura-maven-plugin.version}</version> 
     </plugin> 
     ... 
    </plugins> 
    </reporting> 
</project> 

बस इस सेटअप के साथ यह परीक्षण करने और जाँच कोड कवरेज में बनाया गया है या नहीं। यदि आपको अपनी परियोजना (पोम, परीक्षण इत्यादि) दिखाने की ज़रूरत नहीं है। जब आप चाहते हैं कि आपके कवरेज रिपोर्ट उत्पन्न करने Cobertura:

+0

मैं अपने निर्देशों का पालन किया है और एक ही परिणाम मिला। केवल अंतर यह है कि 2.13 के साथ, परीक्षण बिल्कुल नहीं चलते हैं। 2.1.3 के साथ सभी परीक्षण चलाते हैं। बहुत अजीब। आपके सुझाव के अनुसार, मैं ऊपर पूरे pom.xml पोस्ट करेंगे। फिर, इसे देखने के लिए धन्यवाद। – JAM

+0

यह भी ध्यान रखें, कि अगर मैं किसी भी चरण पर सभी की जरूरत नहीं है, Cobertura बिल्कुल नहीं चलता – JAM

1

पहले, मैं Cobertura स्थापित mvn साफ चलाने के लिए सलाह देते हैं। यह बहुत कुछ आप हर एक का निर्माण (मैं व्यक्तिगत रूप से केवल जेनकींस में Cobertura का उपयोग करें) के लिए क्या करना चाहते हैं होने की संभावना नहीं है।

दूसरा, यह सभी परीक्षणों में दो बार चलाने के लिए कष्टप्रद लग सकता है, लेकिन कुछ लोगों को लगता है कि यह और अधिक विश्वसनीय है, और इसलिए व्यवहार का इरादा है। इसका कारण यह है Cobertura उपकरणों अपने बाईटकोड है। इसलिए, एक (बहुत कम) मौका है कि यह आपके परीक्षणों के परिणामों के साथ गड़बड़ कर देता है।

लेकिन निश्चित रूप से, इस डबल परीक्षण चालन के लिए समय लगता है, इस कारण से भी आपको नहीं चला होगा Cobertura है: अपने मानक जीवन चक्र

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