【发布时间】:2018-01-11 05:00:08
【问题描述】:
我正在使用 JaCoCo 生成代码覆盖率报告,并且我有许多场景要为其生成单独的报告。问题是程序非常庞大,启动和加载所有类文件大约需要 2 分钟。
我想在其中一个场景完成后立即获取运行时的执行数据,然后从下一个场景开始,而不是为每个场景重新启动服务器。
有办法吗?
【问题讨论】:
标签: code-coverage jacoco
我正在使用 JaCoCo 生成代码覆盖率报告,并且我有许多场景要为其生成单独的报告。问题是程序非常庞大,启动和加载所有类文件大约需要 2 分钟。
我想在其中一个场景完成后立即获取运行时的执行数据,然后从下一个场景开始,而不是为每个场景重新启动服务器。
有办法吗?
【问题讨论】:
标签: code-coverage jacoco
以下所有内容均来自 http://www.jacoco.org/jacoco/trunk/doc/ 的 JaCoCo 官方文档
http://www.jacoco.org/jacoco/trunk/doc/agent.html 中描述的 Java 代理具有选项 output:
- 文件:在 VM 终止时,执行数据将写入 destfile 属性中指定的文件。
- tcpserver:代理在地址和端口属性指定的 TCP 端口上侦听传入连接。执行数据是 写入此 TCP 连接。
- tcpclient:启动时,代理连接到地址和端口属性指定的 TCP 端口。执行数据是 写入此 TCP 连接。
和选项jmx:
如果设置为 true,代理会通过 JMX 公开 functionality
通过 JavaDoc 中描述的 JMX 功能公开提供以下三种方法:
byte[] getExecutionData(boolean reset)返回当前执行数据。
void dump(boolean reset)通过配置的输出触发当前执行数据的转储。
void reset()重置所有覆盖信息。
同样来自文档还有 Ant Task dump -
http://www.jacoco.org/jacoco/trunk/doc/ant.html:
此任务允许从另一个 JVM 远程收集执行数据而无需停止它。 远程转储对于应用服务器等长时间运行的 Java 进程很有用。
dump 命令行界面中的命令 -
http://www.jacoco.org/jacoco/trunk/doc/cli.html
dump 目标在jacoco-maven-plugin - http://www.jacoco.org/jacoco/trunk/doc/dump-mojo.html
- MBeanClient.java 此示例连接到覆盖代理以收集 通过 JMX 执行数据。
- ExecutionDataClient.java 这个例子 连接到覆盖代理以通过远程收集执行数据 协议。
- ExecutionDataServer.java 此示例启动一个套接字服务器 通过远程协议从代理收集执行数据。
【讨论】: