获取jmeter功能测试代码覆盖率

Get jmeter functional test code coverage

我正在尝试使用 maven 插件提取关于我的 jmeter 功能测试执行的代码覆盖率报告。我尝试使用 jacoco 插件将其配置为生成代码覆盖率报告,但它似乎只能通过格式为 java 类 的单元和集成测试进行配置,例如*IT.java 或 *Test.java。但在我的例子中,功能测试执行是通过使用 jmeter 插件的 Jmeter .jmx 文件进行的。我知道获得功能测试的代码覆盖率很少见,但如果有人做过类似的事情,请分享一些细节。下面是我用于 Jmeter 测试执行的插件。

<plugin>
               <groupId>com.lazerycode.jmeter</groupId>
                   <artifactId>jmeter-maven-plugin</artifactId>
                   <version>2.1.0</version> 
                   <executions>
                     <execution>
                              <id>jmeter-tests</id>
                              <phase>verify</phase>
                              <goals>
                                <goal>jmeter</goal>
                              </goals>
                         </execution>
                  </executions> 
                  <configuration>
                    <ignoreResultFailures>true</ignoreResultFailures>
                    <resultsDirectory>${jmeter-testresults}</resultsDirectory>
                        <propertiesUser> 
                              <hostname>${jmeter-testhost}</hostname>
                              <hostport>${jmeter-testport}</hostport>
                              <testresults>${jmeter-testresults}</testresults>
                    </propertiesUser> 
                       <propertiesJMeter>
                              <jmeter.save.saveservice.url>true</jmeter.save.saveservice.url>
                              <jmeter.save.saveservice.samplerData>true</jmeter.save.saveservice.samplerData>
                       </propertiesJMeter> 
              </configuration>
            </plugin>

我可以使用 git bash 命令行获得代码覆盖率。以下是步骤。

  • http://www.eclemma.org/jacoco/ 下载 jacoco 项目并解压到本地,例如C:/雅可可。它将在 lib 文件夹中包含 jacocoagent.jar 和 jacococli.jar。

  • 打开Gitbash(也可以使用简单的命令行)。

    export MAVEN_OPTS="-javaagent:C:\jacoco\lib\jacocoagent.jar=output=tcpserver"
    mvn exec:java -Dexec.mainClass="full package name to your main class"

以上命令会在服务器启动时将jacocoagent注入到maven jvm中,使其能够读取和捕获执行流并将taht存储到tcpserver上。我使用 tcpserver 作为输出,通过使用文件模式,我需要正常关闭 jvm 以获取执行数据。 服务器启动后,执行

mvn verify

验证命令与我的 pom 中的 Jmeter 执行插件集成 xml。所以验证命令将触发我的 Jmeter 测试执行。 现在执行数据驻留在 tcp 服务器上,我们需要将其转储到 jacoco 文件中以获取报告。执行以下命令将执行数据转储到 jacoco.exec 文件

java -jar C:/jacoco/lib/jacococli.jar dump --destfile "your local path/jacoco.exec"

现在您应该会看到在提到的路径处生成了一个 jacoco.exec 文件。但是,此数据不是人类可读的格式。要生成可读 html 格式的报告,请执行以下命令。

java -jar C:/jacoco/lib/jacococli.jar report "Path to jacoco file/jacoco.exec" --classfiles "Path to project class files" --html "path to store report\jacoco-report" --name myReport --sourcefiles "Path to source files"

现在您应该能够看到在给定路径生成的 html 格式的报告。

Reference