【问题标题】:Dump execution data at run time在运行时转储执行数据
【发布时间】:2018-01-11 05:00:08
【问题描述】:

我正在使用 JaCoCo 生成代码覆盖率报告,并且我有许多场景要为其生成单独的报告。问题是程序非常庞大,启动和加载所有类文件大约需要 2 分钟。

我想在其中一个场景完成后立即获取运行时的执行数据,然后从下一个场景开始,而不是为每个场景重新启动服务器。

有办法吗?

【问题讨论】:

    标签: code-coverage jacoco


    【解决方案1】:

    以下所有内容均来自 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

    API usage examples 包括:

    • MBeanClient.java 此示例连接到覆盖代理以收集 通过 JMX 执行数据。
    • ExecutionDataClient.java 这个例子 连接到覆盖代理以通过远程收集执行数据 协议。
    • ExecutionDataServer.java 此示例启动一个套接字服务器 通过远程协议从代理收集执行数据。

    【讨论】:

      猜你喜欢
      • 2013-02-05
      • 2012-03-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-05-18
      • 1970-01-01
      • 1970-01-01
      • 2015-06-29
      相关资源
      最近更新 更多