7_R*_*R3X 5 code-coverage jacoco
我正在使用 JaCoCo 生成代码覆盖率报告,并且我有许多场景需要生成单独的报告。问题是该程序非常庞大,大约需要 2 分钟才能启动并加载所有类文件。
我想在其中一个场景完成后立即获取运行时的执行数据,然后开始下一个场景,而不是为每个场景重新启动服务器。
有办法这样做吗?
以下所有内容均摘自 JaCoCo 官方文档: http://www.jacoco.org/jacoco/trunk/doc/
http://www.jacoco.org/jacoco/trunk/doc/agent.html中描述的 Java 代理有选项output
:
- file:VM 终止时,执行数据将写入 destfile 属性中指定的文件中。
- tcpserver:代理侦听地址和端口属性指定的 TCP 端口上的传入连接。执行数据写入此 TCP 连接。
- tcpclient:启动时,代理连接到地址和端口属性指定的 TCP 端口。执行数据写入此 TCP 连接。
和选项jmx
:
如果设置为 true,代理将通过 JMX公开功能
通过 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
API 使用示例包括:
- MBeanClient.java 此示例连接到覆盖代理以通过 JMX 收集执行数据。
- ExecutionDataClient.java 此示例连接到覆盖代理以通过远程协议收集执行数据。
- ExecutionDataServer.java 此示例启动套接字服务器以通过远程协议从代理收集执行数据。