科贝图拉和码头 [英] Cobertura and Jetty
问题描述
我正在尝试使用cobertura在Jetty上运行我的Web应用程序时获得覆盖率报告. 通过使用surefire插件,我们已经可以运行cobertura进行单元测试. 我们还为运行集成测试配置了故障安全插件.
I'm trying to get coverage report when running my webapp on Jetty, using cobertura. We already have cobertura running for unit-tests by using the surefire plugin. We also have the failsafe plugin configured for running our integration-tests.
我已经(手动)装备了我的战争并进行了部署.
I've already (manually) instrumented my war and deployed it.
在仅使用集成测试配置文件运行mvn verify
时,cobertura似乎正在工作,因为我在Eclipse控制台中收到了各种新警告(我正在从那里运行码头),这可能是因为cobertura更改了字节码.
但是,即使在码头服务器上调用"stop"
,我也无法写入.ser
文件.
When running mvn verify
with integration-tests only profile, it seems cobertura is working because I get all kind of new warnings in eclipse console (i'm running jetty from there) probably because byte-code was changed by cobertura.
But I don't get the .ser
file to be written, even when calling "stop"
on the jetty server.
在运行mvn cobertura:cobertura
时,确实会得到一个.ser
文件,并且在我的Web应用程序的target/site
目录下生成了一个报告.该报告显示覆盖率为0%,因为cobertura:cobertura
没有运行任何测试.
I do get a .ser
file when running mvn cobertura:cobertura
and a report is generated under target/site
directory of my webapp. The report shows 0% coverage because cobertura:cobertura
doesn't run any tests.
如何使用故障保险使cobertura正常运行来运行集成测试? 还有其他建议吗?
How can I run my integration-tests using the failsafe make cobertura to work? Any other suggestions?
谢谢, 本
推荐答案
我通过使用解决了此问题cobertura-it 插件.它扩展了原始的cobertura插件,并允许使用仅报告目标.此外,我必须运行两个单独的命令(请参见下文)以测试并生成报告(合并到1个命令不起作用).这是我的插件配置.
I solved this issue by using cobertura-it plugin. It extends the original cobertura plugin and allows to use report-only goal. In addition, I must run two separate commands (see below) to test and generate reports (merging to 1 command does not work). Here is my plugin configuration.
<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
请注意,在Jetty停止运行后,会有一些cobertura消息:
Note that after Jetty is stopped, there is some cobertura messages:
[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
生成报告.这是我的报告配置
Finally, I use mvn site
to generate reports. Here is my report configuration
<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>
这篇关于科贝图拉和码头的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!