【问题标题】:emma not generating reports but cobertura does?emma 不生成报告,但 cobertura 生成报告?
【发布时间】:2011-03-02 02:59:48
【问题描述】:

在这两个之间进行比较问题的基本原因是,在我的 pom.xml 的构建部分中放入以下插件信息后,我能够在站点目录(cobertura)中生成报告。但是emma 不会发生同样的情况。我检查了 codehause mojo 中的文档,两者几乎相同。我的配置是:

<plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>emma-maven-plugin</artifactId>
            <version>1.0-alpha-2</version>
            <executions>
                <execution>
                    <phase>process-classes</phase>
                    <goals>
                        <goal>emma</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>

但它不会按预期在站点目录中生成报告,但我可以看到每次生成的coverage.em 和检测的类。我缺少任何配置吗?

【问题讨论】:

  • 包含在 中,对吗?

标签: maven-2 cobertura emma


【解决方案1】:

我无法重现您的问题。我将您的配置 sn-p 复制并粘贴到一个随机的 pom.xml 中,并运行 process-classes 之后的任何阶段触发 emma:emma 并按预期生成覆盖率报告:

$ mvn clean 进程类 [INFO] 正在扫描项目... [信息] --------------------------------------------- ------------------------- [INFO] 建筑测试项目 [INFO] 任务段:[clean, process-classes] [信息] --------------------------------------------- ------------------------- [信息] [清洁:清洁 {执行:默认清洁}] [INFO] 删除目录 /home/pascal/tmp/test-project/target [信息] [资源:资源{执行:默认资源}] [INFO] 使用 'UTF-8' 编码复制过滤的资源。 [INFO] 复制 1 个资源 [信息] [编译器:编译{执行:默认编译}] [INFO] 将 1 个源文件编译到 /home/pascal/tmp/test-project/target/classes [信息] 准备艾玛:艾玛 ... EMMA:运行时覆盖数据合并到 [/home/pascal/tmp/test-project/coverage.ec] {in 93 ms} [信息] [艾玛:艾玛 {执行:默认}] 处理输入文件... 2 个文件在 3 毫秒内读取和合并 将 [xml] 报告写入 [/home/pascal/tmp/test-project/target/site/emma/coverage.xml] ... 将 [html] 报告写入 [/home/pascal/tmp/test-project/target/site/emma/index.html] ... [信息] --------------------------------------------- ------------------------- [信息] 构建成功 [信息] --------------------------------------------- -------------------------

您的项目中有单元测试吗? coverage.em 文件是非空的吗?如果在命令行上运行 emma:emma 会发生什么?使用 -X 选项运行 mvn 会给您任何提示吗?你能发布一些有用的痕迹吗?

作为旁注,我个人不会将emma:emma 作为常规构建的一部分运行。我要么从命令行运行emma:emma 目标,要么按照Usage 页面中的建议配置插件和报告部分。但那是另一个故事,并不能回答问题。

【讨论】:

  • 嘿帕斯卡非常感谢您的关注。是的,我确实有单元测试并且coverage.em 不是空的。请参阅下面我缺少的内容。
  • 但仍在查看您的跟踪它的奇怪行为。我注意到的事情是,一个是输出目录,但你说你只是复制粘贴了我的代码,另一个是我正在运行“全新安装”。不要不知道怎么回事。
  • @RN 是的,我“按原样”使用了 sn-p。我刚刚用mvn clean install 进行了测试,得到了相同的结果。你的 pom 是否继承自另一个(我的没有)。
  • 它继承自父项目。
【解决方案2】:

这真的很奇怪:更正的插件条目是:查看输出目录

<plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>emma-maven-plugin</artifactId>
            <version>1.0-alpha-2</version>
            <inherited>true</inherited>
            <executions>
                <execution>
                    <id>emma</id>
                    <phase>process-classes</phase>
                    <goals>
                        <goal>emma</goal>
                    </goals>
                </execution>
            </executions>
            <configuration>
                <outputDirectory>${project.build.directory}</outputDirectory>
            </configuration>
        </plugin>

emma 甚至不接受 ${project.build.directory}/emma。

结论:当您将任何子目录添加到 ${project.build.directory} 时,emma 未生成报告,例如${project.build.directory}/emma-reports。

【讨论】:

  • ${basedir} 已弃用,使用 ${project.basedir} 和 ${basedir}/target 总是不好,使用 ${project.build.directory} (和 ${project.build. outputDirectory} 用于目标/类)
  • 嗨,我也遇到了同样的问题,你能给我一些建议吗?[INFO]
猜你喜欢
  • 2013-04-27
  • 1970-01-01
  • 1970-01-01
  • 2023-03-21
  • 2014-12-01
  • 2011-04-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多