针对 Java 应用程序的机器人框架编写的测试用例的代码覆盖率报告

问题描述 投票:0回答:1

我有一个场景,我试图获取我们使用机器人框架编写的功能测试用例的覆盖率报告。 应用程序后端是用java编写的,UI代码是用Vue.js编写的 应用程序部署在作为容器运行的 K8s 集群中。应用程序 ULS 使用 Ingress 控制器公开。 我们使用来自另一台服务器的 jenkins 触发机器人测试用例。 我想获得我们运行的功能测试用例的代码覆盖率。 对于我们可以使用什么工具以及如何获取它的任何建议,我们将不胜感激。

仅供参考 - 我已经在使用 JaCoCo 进行单元测试用例覆盖。

谢谢, 乌特卡什

我按照以下网址进行操作。 Jacoco:查找外部测试的代码覆盖率 我将其添加到我的 build.gradle 中

jacocoTestReport { 
reports { 
xml.enabled false 
csv.enabled false 
html.destination file("$buildDir/reports/coverage") 
}

在为我的应用程序构建 docker 映像之前,我更新了 docker 文件,如下所示

java -jar myApp.jar -javaagent:/some/path/jacocoagent.jar

然后我开始从 Jenkins 服务器执行功能测试用例。

之后我无法理解如何生成覆盖率报告。 可能我需要在 pod 内执行以下命令才能获取覆盖率报告。但我不确定将 gradle 二进制文件打包到容器中是否是一个好主意,因为它会增加 docker 镜像的大小。 如何从詹金斯自动化此过程以在作业页面上显示覆盖率报告。

./gradlew jacocoTestReport

任何建议都会有帮助。

jenkins robotframework jacoco functional-testing
1个回答
0
投票

我能够获得我的回归测试套件的覆盖范围。 我手动执行此操作只是为了首先证明这个概念。 我的应用程序作为 Kubernetes 集群中的 Pod 运行,并且应用程序 URL (https://example.com) 通过入口控制器公开。 我的测试用例是使用 Jenkins 从不同的服务器触发的,我们使用机器人框架。当测试用例被触发时,它会访问 URL example.com 并开始执行测试用例。

我遵循的步骤:

  1. 在 pod 或容器中添加了 jacocoagent.jar 和 jacococli.jar。

  2. 通过 YML 文件在 K8s 上部署应用程序时设置以下 JVM 参数。 您也可以通过 dockerfile 设置它。 javaagent:/tmp/jacocoagent.jar=output=tcpserver,includes=com/x/y/z/*,address='星号',port=6300,append=false

  3. 我触发了我的回归套件。

  4. 进入 pod 并使用 jacococli.jar 转储 exec 文件

    java -jar jacococli.jar dump --地址 localhost --端口 6300 --destfile jacoco-server.exec

  5. 将上面的执行文件“jacoco-server.exec”复制到我的本地。

  6. 将 exec 文件转换为 html 报告。

    java -jar jacococli.jar 报告 jacoco-server.exec --classfiles 类/ --html html**

注意:此处必须填写类文件路径。

这就是我为了证明这个概念所做的事情。 为了自动执行此操作,我将使用输出模式作为“文件”而不是“tcpserver”,并将在其中创建报告的位置设置“目标路径”。当模式为“文件”时,jacoco.exec 文件将写入 VM/pod 终止时的目标路径。 我仍然需要使用 K8s 测试输出模式作为文件选项。

© www.soinside.com 2019 - 2024. All rights reserved.