我正在尝试使用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/