zoukankan      html  css  js  c++  java
  • jmeter如何引用自己编写的java文件编译的jar包

    需求说明:

    现有三个变量:appId、appSecret、timestamp(当前时间时间戳),根据这三个变量生成signature,加密程序如下:

     1 package cn.yxh.util;
     2 
     3 import org.apache.commons.codec.binary.Base64;
     4 
     5 import javax.crypto.Mac;
     6 import javax.crypto.spec.SecretKeySpec;
     7 import java.net.URLEncoder;
     8 import java.nio.charset.StandardCharsets;
     9 import java.util.HashMap;
    10 import java.util.Map;
    11 import java.util.stream.Collectors;
    12 
    13 public class SignatureUtil {
    14     public static String getSignature(long timestamp, String appId, String appSecret) throws Exception {
    15         Map<String,String> requestParams = new HashMap<>();
    16         requestParams.put("appId", appId);
    17         requestParams.put("timestamp", String.valueOf(timestamp));
    18         requestParams.put("nonce", "nonce");
    19         requestParams.put("appSecret", appSecret);
    20         String stringToSign = requestParams.values().stream()
    21                 .sorted(String::compareTo)
    22                 .collect(Collectors.joining("
    "));
    23         Mac mac = Mac.getInstance("HmacSHA256");
    24         mac.init(new SecretKeySpec(appSecret.getBytes(StandardCharsets.UTF_8), "HmacSHA256"));
    25         byte[] signData = mac.doFinal(stringToSign.getBytes(StandardCharsets.UTF_8));
    26         String base64Sign =  new String(Base64.encodeBase64(signData),StandardCharsets.UTF_8);
    27         String sign = URLEncoder.encode(base64Sign, StandardCharsets.UTF_8.name());
    28         return sign;
    29     }
    30 
    31     public static long getTimeStamp(){
    32         return System.currentTimeMillis();
    33     }
    34 
    35     public static void main(String[] args) throws Exception {
    36         String appId = "12526080-1245184";
    37         String appSecret = "9A6E5171C9A034863622";
    38         System.out.println(getSignature(getTimeStamp(), appId, appSecret));
    39     }
    40 }
    SignatureUtil

    由于使用到了commons-codec-1.14.jar,需要使用jmeter引用外部jar包,但是在使用过程中发现老是报错,且jmeter无法直接使用Map<String,String> requestParams = new HashMap<>();需要转换成Map requestParams = new HashMap;等各种错误,故想自己将java文件打包成jar调用。

    1.编写自己的java文件并利用idea打包成jar文件

    • 新建一个java工程,编写java文件并引入commons-codec-1.14.jar包
    • 按组合键ctrl+shift+alt+s进入项目结构界面,点击第二张图片上的『+』按钮,选择第二个选项
    • 为jar包添加一个主函数,点击OK继续
    • 如果主函数有依赖包,点击『+』按钮添加依赖jar包(如已添加则不需操作),点击OK后可以看到工程中多出了META-INFO文件,里面包含了Jar的入口函数信息

    • 执行组建jar操作:按照下图操作后可以看到最终生成的jar文件

    • 打开命令行cmd,将目录切换到生成jar包的文件位置,执行如下命令:

      java -jar SignatureUtil.jar

      输出:z9kUv8RsE0OPgHmHh8VJqpgGxhn9eVRJkEu7IsP%2Bhag%3D,可见jar文件正常运行了

     

    2.jmeter引用自己编写的jar包

     将SignatureUtil.jar包放到jmeter安装目录下的lib下的ext文件下(例如:D:apache-jmeter-5.1.1libextSignatureUtil.jar)

    jmeter添加jar包

     beanshell脚本调用jar包中的方法

  • 相关阅读:
    .Net关闭数据库连接时判断ConnectionState为Open还是Closed?
    Excel里生成GUID
    Convert.ChangeType不能处理Nullable类型的解决办法
    xml编辑无提示?这么破!
    如何往eclipse中导入maven项目
    巧用浏览器F12调试器定位系统前后端bug
    Web自动化selenium技术快速实现爬虫
    Git一分钟系列--快速安装git客户端
    web自动化原理揭秘
    Web自动化测试环境搭建1(基于firefox火狐浏览器)
  • 原文地址:https://www.cnblogs.com/smartsmile-yxh/p/13671917.html
Copyright © 2011-2022 走看看