我正在尝试使用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:/ jacoco。它在lib文件夹中将包含jacocoagent.jar和jacococli.jar。
打开Git bash(您也可以使用简单的命令行)。


  出口MAVEN_OPTS =“-javaagent:C:\ jacoco \ lib \ jacocoagent.jar = output = tcpserver”
  mvn exec:java -Dexec.mainClass =“主程序包的完整名称”



上面的命令将在服务器启动期间将jacocoagent注入到maven jvm中,以便它可以读取和捕获执行流并将其存储在tcpserver上。我使用tcpserver作为输出,通过使用文件模式,我需要优雅地关闭jvm以获得执行数据。
服务器启动后,执行


  mvn验证


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


  java -jar C:/jacoco/lib/jacococli.jar dump --destfile“您的本地路径/jacoco.exec”


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


  java -jar C:/jacoco/lib/jacococli.jar报告“ jacoco文件/jacoco.exec的路径” --classfiles“项目类文件的路径” --html“存储report \ jacoco-report的路径” --name myReport --sourcefiles“到源文件的路径”


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

Reference

关于java - 获取jmeter功能测试代码覆盖率,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46711015/

10-15 19:31