首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Cobertura和Jetty

Cobertura和Jetty
EN

Stack Overflow用户
提问于 2011-11-07 17:51:21
回答 2查看 2.3K关注 0票数 4

当我使用cobertura在Jetty上运行我的webapp时,我正在尝试获取覆盖报告。通过使用surefire插件,我们已经运行了cobertura进行单元测试。我们还配置了用于运行集成测试的故障保护插件。

我已经(手动)装备了我的war并部署了它。

当使用仅集成测试配置文件运行mvn verify时,cobertura似乎起作用了,因为我在eclipse控制台(我从那里运行jetty )中收到了各种新的警告,可能是因为cobertura更改了字节码。但是,即使在jetty服务器上调用"stop"时,我也无法写入.ser文件。

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

如何使用故障安全使cobertura工作来运行我的集成测试?还有其他建议吗?

谢谢,本

EN

回答 2

Stack Overflow用户

发布于 2011-11-13 14:37:44

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

代码语言:javascript
复制
<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消息:

代码语言:javascript
复制
[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生成报告。以下是我的报告配置

代码语言:javascript
复制
<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>
票数 5
EN

Stack Overflow用户

发布于 2011-11-09 06:42:17

也许你需要给你的cobertura-maven-plugin插件配置一些<execution>标签。http://mojo.codehaus.org/cobertura-maven-plugin/instrumentingDeploymentArtifact.html上有一些例子,但这个答案看起来更好:What is the proper way to use Cobertura with Maven 3.0.2

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8034913

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档