2011-11-07 68 views
4

我想要在使用cobertura在Jetty上运行我的webapp时获得覆盖报告。 我们已经通过使用surefire插件为单元测试运行cobertura。 我们还配置了用于运行集成测试的故障安全插件。Cobertura和码头

我已经(手动)装备我的战争并部署它。

当运行mvn verify与集成测试唯一的配置文件,似乎cobertura工作,因为我得到所有类型的新的警告在Eclipse控制台(我从那里运行码头)可能是因为字节码被cobertura更改。 但是我没有看到.ser文件被写入,即使在码头服务器上调用"stop"

运行时我得到一个.ser文件mvn cobertura:cobertura,并在我的webapp的target/site目录下生成报告。该报告显示0%的覆盖率,因为cobertura:cobertura不运行任何测试。

如何使用失效保护使cobertura运行我的集成测试? 还有其他建议吗?

感谢, 本

回答

5

我通过使用cobertura-it插件解决了这个问题。它扩展了原始的cobertura插件并允许使用仅限报告的目标。另外,我必须运行两个单独的命令(见下文)来测试和生成报告(合并为1命令不起作用)。这是我的插件配置。

<plugin> 
    <groupId>org.codehaus.mojo</groupId> 
    <artifactId>cobertura-it-maven-plugin</artifactId> 
    <version>2.5</version> 
    <configuration> 
     <formats> 
      <format>html</format> 
     </formats> 
     <check> 
      <haltOnFailure>false</haltOnFailure> 
     </check> 
    </configuration> 
    <executions> 
     <execution> 
      <id>pre-integration-test</id> 
      <phase>pre-integration-test</phase> 
      <goals> 
       <goal>cobertura</goal> 
      </goals> 
     </execution> 
    </executions> 
</plugin> 
<plugin>    
    <groupId>org.mortbay.jetty</groupId> 
    <artifactId>jetty-maven-plugin</artifactId> 
    <version>7.4.2.v20110526</version> 
    <configuration> 
     <stopKey>aaaaaaaaaaaaa</stopKey> 
     <stopPort>8085</stopPort> 
    </configuration> 
    <executions> 
     <execution> 
      <id>start-jetty</id> 
      <phase>pre-integration-test</phase> 
      <goals> 
       <goal>run</goal> 
      </goals> 
      <configuration> 
       <scanIntervalSeconds>0</scanIntervalSeconds> 
       <daemon>true</daemon> 
       <classesDirectory>target/generated-classes/cobertura</classesDirectory> 
      </configuration> 
     </execution> 
     <execution> 
      <id>stop-jetty</id> 
      <phase>post-integration-test</phase> 
      <goals> 
       <goal>stop</goal> 
      </goals> 
     </execution> 
    </executions> 
    <dependencies> 
     <dependency> 
      <groupId>net.sourceforge.cobertura</groupId> 
      <artifactId>cobertura</artifactId> 
      <version>1.9.4.1</version> 
     </dependency> 
    </dependencies> 
</plugin> 
<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-failsafe-plugin</artifactId> 
    <version>2.10</version> 
    <executions> 
     <execution> 
       <id>integration-test</id> 
       <phase>integration-test</phase> 
       <goals> 
        <goal>integration-test</goal> 
       </goals> 
     </execution> 
     <execution> 
      <id>verify</id> 
      <phase>verify</phase> 
      <goals> 
       <goal>verify</goal> 
      </goals> 
     </execution> 
    </executions> 
</plugin> 

于是我运行此: mvn clean verify

注意,码头停止后,有一定的Cobertura消息:

[INFO] ------------------------------------------------------- 
[INFO] BUILD SUCCESSFUL 
[INFO] ------------------------------------------------------- 
[INFO] Total time: 1 minute 13 seconds 
[INFO] Finished at: Sun Nov 13 12:58:29 ICT 2011 
[INFO] Final Memory: 86M/204M 
[INFO] ------------------------------------------------------- 
2011-11-13 12:58:29.765:WARN::4 threads could not be stopped 
Flushing results... 
Flushing results done 
Cobertura: Loaded information on 342 classes. 
Cobertura: Saved information on 342 classes. 

最后,我用mvn site生成报告。这是我的报告配置

<reporting> 
    <plugins> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-surefire-report-plugin</artifactId> 
      <!-- An error on version 2.8 --> 
      <version>2.7</version> 
      <configuration> 
       <reportsDirectories> 
        <reportsDirectory>${project.build.directory}/surefire-reports</reportsDirectory> 
        <reportsDirectory>${project.build.directory}/failsafe-reports</reportsDirectory> 
       </reportsDirectories> 
      </configuration> 
      <reportSets> 
       <reportSet> 
        <reports> 
         <report>report-only</report> 
        </reports> 
       </reportSet> 
      </reportSets> 
     </plugin> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-project-info-reports-plugin</artifactId> 
      <version>2.1</version> 
      <configuration> 
       <!-- An error that takes long time to generate this report --> 
       <dependencyLocationsEnabled>false</dependencyLocationsEnabled> 
      </configuration> 
      <reportSets> 
       <reportSet> 
        <reports> 
         <report>dependencies</report> 
        </reports> 
       </reportSet> 
      </reportSets> 
     </plugin> 
     <plugin> 
      <groupId>org.codehaus.mojo</groupId> 
      <artifactId>cobertura-it-maven-plugin</artifactId> 
      <configuration> 
       <formats> 
        <format>html</format> 
        <format>xml</format> 
       </formats> 
      </configuration> 
      <reportSets> 
       <reportSet> 
        <reports> 
         <report>report-only</report> 
        </reports> 
       </reportSet> 
      </reportSets> 
     </plugin> 
    </plugins> 
</reporting>