Jmeter java request : java.lang.ClassNotFoundException 問題
阿新 • • 發佈:2020-12-24
pom build
必須按下面的設定, 打包出with-dependencies
的jar
, 並把這個xxx-with-dependencies
copy 到lib/ext
下
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>JmeterPlug</groupId> <artifactId>aliyuntest</artifactId> <version>1.0-SNAPSHOT</version> <!-- 防止打出jar包後,中文引數亂碼 --> <properties> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <lombok.version>1.16.22</lombok.version> <jackson.version>2.8.10</jackson.version> </properties> <dependencies> <dependency> <groupId>org.apache.jmeter</groupId> <artifactId>ApacheJMeter_java</artifactId> <version>4.0</version> <scope>provided</scope> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>${lombok.version}</version> </dependency> <dependency> <groupId>cn.hutool</groupId> <artifactId>hutool-all</artifactId> <version>4.1.4</version> </dependency> <dependency> <groupId>com.fasterxml.jackson.datatype</groupId> <artifactId>jackson-datatype-guava</artifactId> <version>${jackson.version}</version> </dependency> <dependency> <groupId>com.fasterxml.jackson.datatype</groupId> <artifactId>jackson-datatype-jsr310</artifactId> <version>${jackson.version}</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> <version>1.5.14.RELEASE</version> <exclusions> <exclusion> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-tomcat</artifactId> </exclusion> </exclusions> </dependency> </dependencies> <build> <finalName>jmeter-test</finalName> <!-- 把以來jar包要打入jar內,不然執行時報類找不到錯誤 --> <plugins> <plugin> <artifactId>maven-assembly-plugin</artifactId> <configuration> <descriptorRefs> <descriptorRef>jar-with-dependencies</descriptorRef> </descriptorRefs> <archive> <manifest> <!-- 指定執行主類 --> <mainClass>com.demo.Test</mainClass> </manifest> </archive> </configuration> <executions> <execution> <id>make-assembly</id> <phase>package</phase> <goals> <goal>single</goal> </goals> </execution> </executions> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <configuration> <source>8</source> <target>8</target> </configuration> </plugin> </plugins> </build> </project>
- 實現
AbstractJavaSamplerClient
package support; import support.util.InvokeAliyunGate ; import lombok.extern.slf4j.Slf4j; import org.apache.jmeter.config.Arguments; import org.apache.jmeter.protocol.java.sampler.AbstractJavaSamplerClient; import org.apache.jmeter.protocol.java.sampler.JavaSamplerContext; import org.apache.jmeter.samplers.SampleResult; import support.util.Keys; @Slf4j public class JmeterSupportNing extends AbstractJavaSamplerClient { // // cdp api // private static InvokeAliyunGate cdpApis = new InvokeAliyunGate(Keys.UAT_CDP_AK,Keys.UAT_CDP_SK,Keys.UAT_CDP_URI); // // ulp web // private static InvokeAliyunGate ulpApis = new InvokeAliyunGate(Keys.UAT_ULP_AK,Keys.UAT_ULP_SK,Keys.UAT_ULP_URI); // private static InvokeAliyunGate ulpApis_test = new InvokeAliyunGate(Keys.UAT_ULP_AK_TEST,Keys.UAT_ULP_SK_TEST,Keys.UAT_ULP_URI_TEST); @Override public void setupTest(JavaSamplerContext context) { //可選,測試前執行,做一些初始化工作; log.info("setupTest"); } @Override public void teardownTest(JavaSamplerContext context) { // 可選,測試結束時呼叫; System.out.println("teardownTest"); } @Override public Arguments getDefaultParameters() { // 設定可用引數 Arguments jMeterProperties = new Arguments(); jMeterProperties.addArgument("cookie", ""); jMeterProperties.addArgument("method", ""); jMeterProperties.addArgument("body", ""); jMeterProperties.addArgument("path", ""); jMeterProperties.addArgument("gateway_url", ""); jMeterProperties.addArgument("ak", ""); jMeterProperties.addArgument("sk", ""); return jMeterProperties; } @Override public SampleResult runTest(JavaSamplerContext javaSamplerContext) { //必選,實現自定義請求,請求邏輯; SampleResult sampleResult = new SampleResult(); sampleResult.setSampleLabel("NW Jmeter Java Request"); // 設定請求名稱 try { sampleResult.sampleStart(); //開始統計響應時間標記 String cookie = javaSamplerContext.getParameter("cookie"); String method = javaSamplerContext.getParameter("method"); String body = javaSamplerContext.getParameter("body"); String path = javaSamplerContext.getParameter("path"); String url = javaSamplerContext.getParameter("gateway_url"); String ak = javaSamplerContext.getParameter("ak"); String sk = javaSamplerContext.getParameter("sk"); InvokeAliyunGate apis = new InvokeAliyunGate(ak, sk ,url); apis.invokeGateByMode(body, path, method, cookie); } finally { sampleResult.sampleEnd();// 結束統計響應時間標記 } return sampleResult; } public static void main(String[] args) { System.out.println("ok!!!"); // InvokeAliyunGate ulpApis = new InvokeAliyunGate(Keys.UAT_ULP_AK,Keys.UAT_ULP_SK,Keys.UAT_ULP_URI); // String body = "{\"captcha\":\"string\",\"mobile\":11111111111,\"prefix\":86,\"token\":\"string\"}"; // String path = "/api/login-send-sms-code"; //// String body = "{ \"receiver\":\"11111111111\", \"noticeType\":\"SMS\", \"type\":1 }"; //// String path = "/api/user/web/mobile/reset/send-sms"; // String method = "post"; // ulpApis.invokeGateByMode(body, path, method); } }