【问题标题】:Jacoco code coverage for remote machine远程机器的 Jacoco 代码覆盖率
【发布时间】:2017-06-07 22:06:35
【问题描述】:

我试图找到这个答案,但在任何地方都找不到。我正在做 API 测试,在这个过程中我需要从我的本地机器调用其余的 API。本地机器包含 maven 项目和一个框架来调用各自的 REST API。

我需要检查远程 Rest API 的代码覆盖率,并根据代码覆盖率形成报告。请帮忙,怎么办?

注意:我发现此链接很有用,但没有详细说明该怎么做?

http://eclemma.org/jacoco/trunk/doc/agent.html

【问题讨论】:

    标签: rest maven jacoco


    【解决方案1】:

    您可能会做一些文件复制 - 取决于您运行测试的方式。

    JaCoCo 作为 java 代理运行。因此,您通常会添加链接到应用程序服务器启动脚本的文档中提到的 javaagent 参数。

    -javaagent:[yourpath/]jacocoagent.jar=[option1]=[value1],[option2]=[value2]
    

    所以它看起来像:

    java -javaagent: -jar myjar.jar
    

    使用 tomcat,您可以将“-javaagent”部分添加到 JAVA_OPTS 或 CATALINA_OPTS 环境变量中。其他服务器应该类似。

    这将创建 jacoco*.exec 文件。您需要将它们复制回您的构建或 CI 服务器以显示其结果(例如,如果您使用声纳,则在运行声纳报告器之前​​需要这些文件)。仅包含您感兴趣的软件包很重要。

    您还可以为每种测试风格创建一个 jacoco.exec 文件(jacoco.exec 用于单元测试,jacoco-it.exec 用于集成测试,jacoco-at.exec 用于应用程序测试)。

    而且我不会将覆盖率与性能测试混为一谈——顺便提一下。

    JBoss 的 stackoverflow 上有一些示例

    【讨论】:

    • 嗨,我尝试了给定的示例,但在服务器端没有生成文件,是不是我遗漏了什么?
    • 你停止虚拟机了吗? “输出”参数默认设置为“文件”,它在 vm 终止时写入(写入“destfile”参数,该文件需要可由运行 vm 的用户写入)。
    • 嗨,感谢您一直以来的帮助..只是为了检查文件生成以及我所做的所有本地服务器和客户端机器,使用文件参数,我可以获得 exec 文件,但这包含什么都没有,等于 0 字节。
    • 这些是我的 Java_opts:-javaagent:C:\home\jacoco-agent.jar=destfile=C:\home\jacoco.exec,output=file,includes=restProject\src\main\ java*,address=,append=true,dumponexit=false,classdumpdir=C:\home
    • 我认为包含模式不正确。此时,Jacoco 将看到类路径中的类——它不知道源来自哪里。所以我想它应该类似于 ...,includes=*,... 或 includes=com.domain.package.* 以匹配您感兴趣的实际类
    猜你喜欢
    • 1970-01-01
    • 2016-11-11
    • 2019-01-02
    • 2012-11-02
    • 2014-11-09
    • 2018-05-28
    • 2012-06-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多