- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个比较大的多模块 Maven 项目。我在 Jacoco 处理的每个模块中都有单元测试。我有一个单独的子模块执行“合并”和“报告聚合”,这似乎正在生成数据。我什至在 SonarQube 中使用生成的数据。我的大部分测试都使用 PowerMock,我使用的是离线检测。
但是,在仔细查看覆盖率数据后,我发现它遗漏了我知道在测试期间正在执行的类和方法的覆盖率数据。我在每个模块中看到的模式是它只报告每个模块中单个类的覆盖率,它实际上是当前模块中的一个类。几乎所有测试还会调用构建中其他模块中的其他类,并且从未报告过这些类的覆盖率。
以下插件配置在每个子模块使用的父pom中:
<plugin>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
<version>0.7.8</version>
<executions>
<execution>
<id>default-instrument</id>
<goals>
<goal>instrument</goal>
</goals>
</execution>
<execution>
<id>default-restore-instrumented-classes</id>
<goals>
<goal>restore-instrumented-classes</goal>
</goals>
</execution>
<execution>
<id>default-report</id>
<phase>prepare-package</phase>
<goals>
<goal>report</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.19.1</version>
<configuration>
<argLine>-Xmx1024m</argLine>
<includes>
<include>**/*Test.java</include>
</includes>
<systemPropertyVariables>
<jacoco-agent.destfile>${project.build.directory}/jacoco.exec</jacoco-agent.destfile>
<running-unit-test>true</running-unit-test>
</systemPropertyVariables>
</configuration>
</plugin>
当我检查为每个模块生成的 HTML 结果时,我发现它只报告当前模块中单个类的结果,而不报告其他模块中类的数据。由此,我假设我在单独的子模块中如何进行“合并”和“报告聚合”可能与这个问题无关。
生成的“jacoco.exec”文件是二进制文件,但我尝试从一个模块中“剔除”一个文件,只是为了查看可见的 ascii 文本,它只显示了一次看起来像文件名的内容,并且它是该模块的 HTML 覆盖率报告中报告的唯一文件名。
我不确定我可以报告哪些其他信息。
更新:
我想我现在可以很清楚地看到,当 surefire 运行单元测试时,它使用当前模块中的检测类,但使用 Maven Artifact 中的未检测类。这就是为什么我只看到当前模块中类的覆盖率。
所以我似乎需要一种方法来指定当前模块所依赖的每个模块的“target/generated-classes/jacoco”文件夹添加到 surefire 使用的类路径之前。我看不到这样做的方法。
或者,我看到“instrument”目标有一个“includes”配置元素。我是否应该为当前模块所依赖的每个模块指定所有“目标/类”目录的路径?
最佳答案
记录某些类的代码覆盖率需要它的检测。目标 instrument
执行当前模块类的检测。
all of the tests also call out to other classes in other modules
所以那些没有检测的。如果我的理解正确,那么正是您遗漏的内容。
如果您不对来自其他模块的类使用 PowerMock,而只对当前模块中的类使用 PowerMock,那么您可以使用代理将离线检测与即时检测结合起来。但在这种情况下,请确保离线检测的类被代理明确排除在检测之外,否则代理将抛出 IllegalStateException: Class ... is already instrumented
。
如果您对来自其他模块的类使用 PowerMock,那么由于 Maven 在类路径和依赖项操作方面的严格性,这会变得更加复杂。我怀疑使用一个 mvn
命令是否可以轻松实现这一点,但是使用更多似乎是可能的:
restore-instrumented-classes
很遗憾,您没有提供完整的示例 (https://stackoverflow.com/help/mcve),我现在没有时间准备完整的示例来测试这种方法。
附带说明:无法简单地使用代理是因为 PowerMock 会绕过任何代理并从磁盘读取类文件。
关于java - jacoco 仅显示同一模块中类的覆盖率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42302786/
在旧版 Web 应用程序中,我们没有对 javascript 部分进行任何单元测试。 我们希望提高代码质量并删除死代码。 有什么方法可以在人工测试期间在浏览器中进行逐行 Javascript 代码覆盖
我已经为我的 python 代码编写了测试,并且想检查测试覆盖了多少百分比,所以我决定使用 python 覆盖。但是我启动它时遇到问题。我用这个 bash 命令启动我的测试: export PYTHO
我正在使用 python 覆盖工具来运行我的单元测试。从结果中可以看出,它包括所有“站点包”。我怎样才能将它们排除在报告之外?我只想显示项目源代码的报告。 (ctrp) ubuntu@ubuntu-x
我正在尝试使用 Opencover 来运行 NUnit 测试用例的代码覆盖率。我得到了预期的结果,但问题是在执行 opencover 时它再次运行测试。我们不希望发生这种情况,因为我们单独运行测试。下
我正在尝试使用 Opencover 来运行 NUnit 测试用例的代码覆盖率。我得到了预期的结果,但问题是在执行 opencover 时它再次运行测试。我们不希望发生这种情况,因为我们单独运行测试。下
我有一个 python 项目,我使用: pipenv 毒性 pytest 还有更多。 基本上,我想将 tox 添加到我的 gitlab 管道中。几乎一切似乎都有效,从 tox 调用 mypy、flak
我使用Coverity来分析代码C。 配置命令: cov-configure --compiler /opt/toolchains/stbgcc-4.5.4-2.9/bin/mipsel-linux-
是否可以在运行时测量 python 代码覆盖率并在生成结果时查看结果?我尝试使用 coverage但找不到有帮助的选项。我最初的实验表明,.coverage 文件直到程序执行结束才被保存,这意味着我们
我有一个文件,test_basic.py: class TestCalculator(): def test_calculator(self): from basic impo
我有一个小型 PHP 项目,它使用 PHPUnit 进行单元测试和覆盖。我想生成 cobertura XML 格式的覆盖率报告。 我可以使用任何工具或插件来实现这一目标吗? 感谢任何帮助.. 最佳答案
我正在研究一个小 gem 并包含 simplecov到 spec_helper.rb 两行: require 'simplecov' SimpleCov.start 当我运行 rspec 测试时,si
go -cover 或 -coverprofile 在运行 go 测试时非常有用,并且可以在 html 或纯文本中很好地显示。但是是否有 api 以编程方式访问它或处理文件? 最佳答案 你可以试试ax
当我遇到代码覆盖问题时,我目前开始在 PHPUnit 中使用 strict 模式: 如果我使用setUp-方法创建我的类的新实例,__constructor-方法在我运行测试。 这是我的测试设置: p
我正在运行 EclEmma,它是 Eclipse 的 Emma 插件,覆盖率报告仅显示我定义的 Enum 的部分覆盖率,即使它显示 Enum 中唯一的值被覆盖。我假设支持 Enum 的隐含方法存在覆盖
我正在将 ANT 构建转换为 Maven。我不使用声纳。 在 Maven 中,Jacoco 似乎没有报告有关单元测试本身的覆盖率,而 ANT 则报告了。我也一直在尝试为我的 Maven 构建获取这个,
我正在努力为我正在处理的库实现 100% 的代码覆盖率,但我似乎对 switch 语句和覆盖率有一些问题,我根本不明白。 我目前使用的是 Jacoco 0.7.2,因为每个新版本似乎都与 Robole
有没有在intelliJ中不用浏览器运行代码覆盖率的方法? http://www.jetbrains.com/webstorm/webhelp/monitoring-code-coverage-for
我想确保我的 Django 测试套件涵盖我的 URL 配置中列出的所有 URL。有没有办法将 URL 配置中的列表与测试套件中命中的 URL 列表进行比较? 最佳答案 我能够通过定义自定义测试套件运行
哇,好乱啊。这是场景。 主干驱动的 JS 应用。 用于 AMD 功能的 RequireJS,初始化如下: 然后在 main.js 中添加以下配置代码: require.config( { p
我的问题很简单,但答案仍然难以捉摸。假设我有一个包裹 package mypackage func DoTheThing() int { return 5 } 现在假设我在 mypackage_t
我是一名优秀的程序员,十分优秀!