java Maven多模块项目,具有独立的测试模块代码覆盖率?
我有一个maven多模块项目
root:
moduleA/ # no unit tests
moduleB/ # no unit tests
moduleC/ # no unit tests
tests/ # All unit tests, since depends on modules A, B and C
所有测试都在一个名为tests/的模块中,所有代码都在单独的模块中
有没有办法让我得到代码覆盖率
# 1 楼答案
我认为
jacoco
或cobertura
都不能跨模块报告代码覆盖率。在运行测试覆盖率报告之前,您可能希望尝试检测编译的类,而不是依赖于动态检测请参阅此
jacoco
maven goal以执行脱机检测# 2 楼答案
有一种方法可以做到这一点。魔术是创造一个组合的jacoco。exec文件,分两步完成。我的pom:
将其添加到父pom并执行
mvn clean install -DrunTestWithJacoco
和mvn validate -DcreateJacocoReport
。现在你已经完全覆盖了一个类,不管哪个测试覆盖了它。神奇的是使用maven.multiModuleProjectDirectory
创建一个组合jacoco。exec文件。此属性自maven 3.3.1起可用,并指向启动maven构建的文件夹# 3 楼答案
由于Jacoco版本:0.7.7,您可以使用
report-aggregate
根聚甲醛。xml:
子模块pom。xml:
如果你使用Jenkin,你可以只使用jacoco插件和
<goal>report</goal>
,而不需要其他新东西