2014-07-21 151 views
0

我正在嘗試爲我開發的簡單Maven插件生成代碼覆蓋率報告。 Cobertura正確地生成了包含我的項目中的三個類的報告,但即使測試成功執行,它也會報告0%的代碼覆蓋率。我在調試模式下運行它,並且沒有錯誤或Cobertura報告的堆棧跟蹤。Maven插件上的Cobertura代碼覆蓋率測試

我在POM文件中的配置是相當簡單:

<properties> 
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
</properties> 
<dependencies> 

    <dependency> 
     <groupId>org.apache.maven</groupId> 
     <artifactId>maven-artifact</artifactId> 
     <version>3.0.5</version> 
    </dependency> 

    <dependency> 
     <groupId>org.apache.maven</groupId> 
     <artifactId>maven-compat</artifactId> 
     <version>3.0.5</version> 
    </dependency> 

    <dependency> 
     <groupId>org.apache.maven</groupId> 
     <artifactId>maven-plugin-api</artifactId> 
     <version>3.0.5</version> 
    </dependency> 

    <dependency> 
     <groupId>org.apache.maven.plugins</groupId> 
     <artifactId>maven-resources-plugin</artifactId> 
     <version>2.6</version> 
    </dependency> 

    <dependency> 
     <groupId>org.apache.maven</groupId> 
     <artifactId>maven-core</artifactId> 
     <version>3.0.5</version> 
    </dependency> 

    <dependency> 
     <groupId>org.apache.maven.plugin-tools</groupId> 
     <artifactId>maven-plugin-annotations</artifactId> 
     <version>3.1</version> 
    </dependency> 
    <dependency> 
     <!-- version 2.1 uses sonatype aether. anything after 2.1 uses eclipse aether. --> 
     <groupId>org.apache.maven.plugin-testing</groupId> 
     <artifactId>maven-plugin-testing-harness</artifactId> 
     <scope>test</scope> 
     <version>2.1</version> 
    </dependency> 
    <dependency> 
     <groupId>junit</groupId> 
     <artifactId>junit</artifactId> 
     <version>4.11</version> 
     <scope>test</scope> 
    </dependency> 
    <dependency> 
     <groupId>org.twdata.maven</groupId> 
     <artifactId>mojo-executor-maven-plugin</artifactId> 
     <version>2.1.0</version> 
    </dependency> 
    <dependency> 
     <groupId>org.apache.maven.plugins</groupId> 
     <artifactId>maven-assembly-plugin</artifactId> 
     <version>2.4</version> 
     <type>maven-plugin</type> 
    </dependency> 
</dependencies> 
<build> 
    <plugins> 
     <plugin> 
      <artifactId>maven-surefire-plugin</artifactId> 
      <version>2.16</version> 
      <executions> 
       <execution> 
        <id>test-custom-plugin</id> 
        <phase>test</phase> 
        <goals> 
         <goal>test</goal> 
        </goals> 
        <configuration> 
         <forkMode>never</forkMode> 
         <forkCount>0</forkCount> 
         <reuseForks>true</reuseForks> 
        </configuration> 
       </execution> 
      </executions> 
     </plugin> 

     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-compiler-plugin</artifactId> 
      <version>3.1</version> 
      <configuration> 
       <source>1.6</source> 
       <target>1.6</target> 
      </configuration> 
     </plugin> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-plugin-plugin</artifactId> 
      <version>3.2</version> 
      <configuration> 
       <goalPrefix>MyCustomPlugin</goalPrefix> 
      </configuration> 
      <executions> 
       <execution> 
        <id>default-descriptor</id> 
        <goals> 
         <goal>descriptor</goal> 
        </goals> 
        <phase>process-classes</phase> 
       </execution> 
       <execution> 
        <id>help-descriptor</id> 
        <goals> 
         <goal>helpmojo</goal> 
        </goals> 
        <phase>process-classes</phase> 
       </execution> 
      </executions> 
     </plugin> 
     <plugin> 
      <groupId>org.codehaus.mojo</groupId> 
      <artifactId>cobertura-maven-plugin</artifactId> 
      <version>2.5.2</version> 
     </plugin> 
    </plugins> 
</build>  

的Cobertura適用於所有我的其他項目(至今)的,沒有任何理由,這將無法爲一個Maven插件項目報告覆蓋?

+0

請顯示您的完整pom文件,否則很難看到發生了什麼事情。 – khmarbaise

+0

@khmarbaise:我已經添加了POM的更多細節 – FrustratedWithFormsDesigner

+0

首先,我懷疑你的依賴關係,特別是對於maven-assembly-plugin,maven-resources-plugin,除了你在哪裏找到測試以外,還有其他意義。報告的測試是否會被執行? 'mvn clean test'?魔咒被提取了嗎?你能顯示輸出嗎?此外,你喜歡寫什麼樣的插件?真的需要嗎? – khmarbaise

回答

0

看來問題出在我的surefire配置。我將其更改爲

 <plugin> 
      <artifactId>maven-surefire-plugin</artifactId> 
      <version>2.16</version> 
      <executions> 
       <execution> 
        <id>test-custom-plugin</id> 
        <phase>test</phase> 
        <goals> 
         <goal>test</goal> 
        </goals> 
        <configuration> 
         <forkCount>1</forkCount> 
         <reuseForks>true</reuseForks> 
        </configuration> 
       </execution> 
      </executions> 
     </plugin> 

現在可以正確生成報告。我的想法是從我看到的有關生成聲納插件報告的類似問題的許多帖子中更改fork選項,並更改fork選項解決了問題。

相關問題