繁体   English   中英

内置JAR的代码覆盖率

[英]Code coverage of built JAR

是否可以为属于我的类路径的JAR文件生成代码覆盖率报告?

jar已被编译并作为库添加到Gradle项目。

jar的测试代码存储在项目中。

是否可以生成代码覆盖率报告以添加到类路径jar?

应该有。 您并没有告诉您正在使用哪个代码覆盖率工具。 从问题中的标签看来,您正在使用JaCoCo

代码覆盖通常分为三个阶段:

  1. 工具 :对已编译的类运行代码覆盖率工具,该工具将创建类的工具版本。 从概念上讲,被检测的类在每行增加了计数器的代码处已注入代码。 这就是跟踪已访问哪条线的方式。
  2. 检测类的代码执行 :运行代码,计数器收集已访问的行。
  3. 报告 :读取计数器收集的数据,并将其用于生成代码覆盖率报告。 在此阶段,您将需要源代码,以便代码覆盖率工具可以将代码覆盖率结果与实际源匹配。

在您的方案中,您可以做的是解压缩要覆盖其代码的JAR,分析其中的类,然后将这些类压缩到另一个JAR。 用具有检测类的JAR替换原始JAR。

这是非标准的工作流程,可能无法在Ant / Maven中轻松配置,但是您可以通过编程方式进行操作,请参阅APIAPI示例

我认为您可以为自己量身定制这样的解决方案:

  1. 您进行“覆盖数据收集”
  2. 导出结果。 例如导入CSV数据
  3. 您编写了一点代码,该代码确实获取了任何JAR归档文件的所有类/程序包的名称
  4. 然后,您只需从使用步骤3生成的CSV文件中提取这些行即可。

给出您的评论:您似乎不了解“覆盖”正在为您做什么。 关键是:启动JVM;然后启动JVM。 JVM 运行一些代码。 在这样做的同时,将收集有关使用哪些类/方法,采用的路径等数据。

换一种说法:

  • 驱动 JVM运行东西
  • 覆盖框架记录了采用哪些代码路径的记录

在此过程中,没有任何内容与特定的 JAR相关。 保险只检查运行代码。 映射到“代码来自哪里”是另一个方面。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM