2017-10-12 266 views
1

我想使用maven插件提取我的jmeter功能测试执行的代码覆盖率报告。我尝试使用jacoco插件来配置它来生成代码覆盖率报告,但它似乎是可配置的,只有单元和集成测试是java类的格式,例如* IT.java或* Test.java。但在我的情况下,使用Jmeter插件的Jmeter .jmx文件正在执行功能测试执行。我知道它很少得到功能测试的代码覆盖率,但如果任何人有过类似的工作,请分享一些细节。下面是我用于Jmeter测试执行的插件。获取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> 
+0

使用JMeter的功能测试也不在少数。JMeter并不是世界上最方便的工具,至少对于你没有选择的性能测试来说,但为什么将它用于功能测试呢?特别是如果代码覆盖率是目标。为什么不使用正常的测试框架 - junit,testng等,并简单地在该框架中编写功能测试?代码覆盖率真的很简单... –

+0

这里Jmeter测试更多地被用作微服务的API测试。所以我需要在jmeter测试执行时测试API的代码覆盖率报告。到目前为止,我已经报道过没有API被覆盖,没有API没有被覆盖。我需要扩展结果,以便在执行API时获取代码库,以获取有关丢失案例的更多深度信息。 – Sikandar

+0

由于JMeter对源代码的可见性为零,所以我没有看到如何从JMeter方面完成它。我认为唯一的方法是在JMeter运行时使用一些分析工具,微型服务本身。 –

回答

0

我能够使用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 =输出= tcpserver的”
    MVN高管:JAVA -Dexec.mainClass = “全包名到你的主类”

上述命令将注入jacocoagent到行家JVM服务器启动过程中,使得它可以读取并捕获执行流和taht存储关于tcpserver的。我使用tcpserver作为输出,通过使用文件模式,我需要优雅地关闭jvm以获取执行数据。 一旦服务器启动后,执行

MVN验证

验证命令intgrated在我的POM XML的JMeter执行插件。所以验证命令会触发我的Jmeter测试执行。 现在,由于执行数据驻留在tcp服务器上,我们需要将其转储到jacoco文件中以获取报告。下面执行命令转储在jacoco.exec文件

的Java执行数据-jar C:/jacoco/lib/jacococli.jar转储--destfile “本地路径/ jacoco.exec”

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

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

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

Reference