2014-07-21 99 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选项解决了问题。

相关问题