使用JMeter測試JAVA接口,需要編寫一個java類,繼承AbstractJavaSampleClient,實現具體接口的調用,然后將此工程打包為一個jar包,放置在JMETER_HOME\lib\ext目錄下,然后在JMeter里配置調用。
- 編寫Java類,繼承AbstractJavaSampleClient
- 打包 jar
- 將jar包放置至 JMETER_HOME\lib\ext 目錄
- JMeter里配置調用
1. 添加依賴
<dependency> <groupId>org.apache.jmeter</groupId> <artifactId>ApacheJMeter_java</artifactId> <version>2.7</version> </dependency>
2. 編寫Java類
public class AdSearchServiceTest extends AbstractJavaSamplerClient { private static AdSearchService adSearchService; static { ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml"); adSearchService = applicationContext.getBean("adSearchService", AdSearchService.class); } // @Override public SampleResult runTest(JavaSamplerContext javaSamplerContext) { SampleResult sampleResult = new SampleResult(); String keyword = javaSamplerContext.getParameter("keyword"); AdSearchService.Param param = new AdSearchService.Param(); param.setKeyword(keyword); param.setStart(1); param.setLimit(10); long start = System.currentTimeMillis(); sampleResult.sampleStart(); try { SearchApiResult kievResult = adSearchService.search(param); sampleResult.setResponseData(kievResult.getJson(), "utf-8"); sampleResult.setLatency(System.currentTimeMillis() - start); sampleResult.setDataType(SampleResult.TEXT); sampleResult.setSuccessful(true); } catch (Exception e) { sampleResult.setSuccessful(false); } sampleResult.sampleEnd(); return sampleResult; } public static void main(String[] args) { AdSearchServiceTest kiev = new AdSearchServiceTest(); Arguments arguments = new Arguments(); arguments.addArgument("keyword", "微信"); JavaSamplerContext context = new JavaSamplerContext(arguments); SampleResult result = kiev.runTest(context); System.out.println(new String(result.getResponseData())); } }
注意以下參數:
sampleResult.sampleStart();
sampleResult.setSuccessful(true/false);
sampleResult.sampleEnd();
由於需要統計耗時以及請求成功與否的判斷,需要設置以上參數,方便監聽器統計測試信息
3. 打包
- 打包時需將相關依賴的包一同打包,否則會出現類找不到錯誤。(沒試成功)
- 分開打包。打包時,將依賴 copy 至指定目錄,然后將 jar 添加至 JMeter 的 ex t目錄,最后在 JMeter 界面上指定依賴的 jar 包的目錄。
- maven 插件配置
<build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-dependency-plugin</artifactId> <version>3.0.1</version> <executions> <execution> <id>copy-dependencies</id> <phase>package</phase> <goals> <goal>copy-dependencies</goal> </goals> <configuration> <outputDirectory>target/lib</outputDirectory> <excludeArtifactIds> junit </excludeArtifactIds> <overWriteSnapshots>true</overWriteSnapshots> </configuration> </execution> </executions> </plugin> </plugins> </build>
其中,<outputDirectory>target/lib</outputDirectory> 指明了依賴的 jar 輸出的目錄;
JMeter 配置依賴:
4. 將jar包放置在JMeter_home\lib\ext 目錄下
5. 配置JMeter