2

cobertura在这两个之间进行比较问题的基本原因是,在我的 pom.xml 的构建部分中放入以下插件信息后,我能够在站点目录(for)中生成报告。但同样的情况不会发生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 和检测的类。我缺少任何配置吗?

4

2 回答 2

1

我无法重现您的问题。我将您的配置片段复制并粘贴到随机并运行触发器pom.xml后面的任何阶段,覆盖率报告按预期生成:process-classesemma: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在命令行上运行会发生什么?使用该选项运行 mvn-X会给您任何提示吗?你能发布一些有用的痕迹吗?

作为旁注,我不会emma:emma亲自作为常规构建的一部分运行。我要么从命令行运行目标,要么按照使用emma:emma​​面中的建议配置插件和报告部分。但这是另一个故事,并没有回答这个问题。

于 2010-06-10T13:25:06.010 回答
0

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

<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} 例如 ${project.build.directory}/emma-reports 时,emma 不会生成报告。

于 2010-06-10T13:50:59.513 回答