我正在用Maven和JaCoCo插件生成故障保险和可靠的报告,但我只能设法将它们放在单独的报告中。我也希望有一个全面的覆盖率视图(合并单元测试和集成测试)。
在我认为是彻底的谷歌搜索之后,我只能找到一种方法来用声纳来做到这一点。有没有更简单的方法来做这件事?
相关问题:Maven separate Unit Test and Integration Tests
我正在用Maven和JaCoCo插件生成故障保险和可靠的报告,但我只能设法将它们放在单独的报告中。我也希望有一个全面的覆盖率视图(合并单元测试和集成测试)。
在我认为是彻底的谷歌搜索之后,我只能找到一种方法来用声纳来做到这一点。有没有更简单的方法来做这件事?
相关问题:Maven separate Unit Test and Integration Tests
8条答案
按热度按时间qncylg1j1#
我最近实现了这一点:在经历了一些令人头疼的问题和大量测试之后,我有了一个工作得很好的配置。
如您所见,有6次不同的Jacoco执行来运行测试、合并文件和创建聚合报告。在Jacoco配置之上,您还需要配置surefire和FailSafe来接受来自Jacoco的参数(surefire运行单元测试,FailSafe运行集成测试)。
我使用的所有配置都应该在那里,您使用它所做的是您的设计架构,以使其符合您所需的要求。就我个人而言,如果您遇到文件未被读取的问题,我建议您查看一下我在surefire和FailSafe中排除和包含的内容。
d6kp6zgx2#
不是你想要的答案,但还是...
在大多数情况下,您不应该合并单元测试和集成测试的覆盖率。
单元测试的价值在于它们改进了应用程序的设计,并确保代码的边框正确工作。您应该尝试对您的单元测试进行高分支复盖率。
集成测试的价值在于,它们可以确保应用程序的主要用例正常工作,并确保整个堆栈正确集成。您应该尝试为您的集成测试提供高的功能覆盖率。(但用工具来衡量功能覆盖率是相当困难的)。
如果您需要集成测试来提高分支覆盖率,这是一个强烈的迹象,表明您应该检查代码的设计。如果您已经在没有集成测试的情况下拥有较高的分支机构覆盖率,则添加这些测试不会显著改变您的指标。
8yparm6h3#
您应该查看包含
merge
目标的JaCoCo Maven插件的文档。unftdfkk4#
也许更好的方法是实现使用相同的Jacoco文件,但让它进行另一个测试,这对我们来说是有效的-单位和它测试。
fjaof16o5#
在乍得答案的基础上,以下是我的配置。它被配置为一个名为
jacoco
的单独配置文件,因此我可以轻松地打开和关闭它。它仅使用默认配置。它可以为单元测试创建单独的代码覆盖率报告,为集成测试创建单独的代码覆盖率报告,还可以创建组合的代码覆盖率报告。qjp7pelc6#
我明白了单元测试应该真正位于代码覆盖率的源码……但有时,一个人希望有能力知道,对吗?以下是我所做的(这来自使用Gradle)。
这样,您就可以通过以下方式从单元测试中获得覆盖范围:
或者,您可以通过以下方式获得集成测试的覆盖范围:
或者,您可以通过以下方式全面覆盖单元测试和集成测试:
免责声明:我不是雅可可或GradleMaven。对我可能忘记的任何事情,请随时发表评论。到目前为止,这很好地满足了我的需求。
zvokhttg7#
为了
merge
这里的报告,我有一个完整的工作解决方案。请注意,为了正确运行
merge
策略,应按顺序执行各个阶段(如果将并行执行mvn test
和mvn verify -DskipUnitTests
,则可能无法正常运行)。现在,由于报告已经生成,可以执行声纳命令以发布报告:
4xy9mtcn8#
这是开箱即用的。
说明
默认情况下,
prepare-agent
目标集成了surefire插件和故障保护插件(确切地说,由prepare-agent
设置的argLine
参数由这两个插件使用)。此外,默认情况下,prepare-agent
配置Jacoco,以便在文件已经存在的情况下附加覆盖率结果,因此最终您将获得单个target/jacoco.exec
文件,该文件包含来自单元测试和集成测试的结果。以防这是相关的配置,因为您看到默认配置没有任何变化:):