雅科科+;黄瓜+;Maven设置
我之前已经搜索并使用了关于这个问题的答案,但我最终不确定是否可以继续,我想确保jacoco支持这一点。 我有一个多模块maven项目,我正在使用cucumber进行集成测试:雅科科+;黄瓜+;Maven设置,maven,cucumber,jacoco,Maven,Cucumber,Jacoco,我之前已经搜索并使用了关于这个问题的答案,但我最终不确定是否可以继续,我想确保jacoco支持这一点。 我有一个多模块maven项目,我正在使用cucumber进行集成测试: <modules> <module>a</module> <module>b</module> <module>c</module> </modules> <profiles> <pr
<modules>
<module>a</module>
<module>b</module>
<module>c</module>
</modules>
<profiles>
<profile>
<id>env-local</id>
<modules>
<module>acceptance-tests</module>
</modules>
</profile>
A.
B
C
环境本地
验收试验
验收测试模块未在父pom的标记中定义,但验收测试pom.xml与其他模块具有相同的父定义
问题是所有集成测试都在验收测试中。我在这个模块中甚至没有src/main/java文件夹。我发现的大多数示例在每个模块中都有验收测试,覆盖范围是为属于该模块的代码生成的
在我的例子中,我需要生成一个包含所有使用的类的报告,即使它们来自另一个模块。我也设法做到了这一点,但我只能找到“第一级”的覆盖范围:如果一个类是从spb验收直接使用的,那么它将包含在报告中,但我找不到任何关于间接使用的类的信息
jacoco能实现这种覆盖吗
谢谢大家! 您的问题是Maven在构建项目时使用了深度优先的方法。也就是说,它将在进入下一个模块之前完成模块中的所有内容 结果是
- 生产类被编译
- 生产类被检测,因此可以测量代码覆盖率
- 执行测试并记录使用情况
- 收集使用结果
- 重复下一个模块
- 编译所有代码
- 在代码中插入指令
- 执行所有测试
- 合并并构建报告
几年前我写了一篇文章 问题是我没有重用jacoco-it.exec文件。当我有一个模块时,它可以工作,但是对于一个子模块,它进入模块目标,并且不能重用该文件
<modules>
<module>a</module>
<module>b</module>
<module>c</module>
</modules>
A.
B
C
因此,它计算了没有模块本身的模块的覆盖率。
如果b有b1和b2,则使用此条目${project.basedir}/./target/jacoco-it.exec
对于sonar.jacoco.itReportPath,它在b的目标中查找文件,而不是主pom的目标。在与一个多模块项目搏斗之后,我创建了一个显示单元、集成和测试。测试覆盖率通过Jacoco显示。 您可以在模块3黄瓜测试中看到
- 多模块项目
- 单元测试(通过mvn清洁安装)
- 集成测试(通过mvn清洁安装-P集成测试)
- Cumber测试(通过mvn清洁安装)-到演示单元/it测试
- Jacoco-测试覆盖率(聚合数据文件和聚合报告)
- FindBugs-代码质量
- 在“构建”“插件管理”部分的父pom中定义故障保护和surefire插件的定义李>
- 在使用这些插件的每个模块中,通过一个非常简单的groupid和artifactid引用插件。就这些李>