metershpere實(shí)現(xiàn)調(diào)用自定義jar包中的方法
背景
在編寫(xiě)一些稍微復(fù)雜一點(diǎn)的邏輯的接口測(cè)試用例時(shí),大家可以感覺(jué)到metershpere用起來(lái)并不方便,即使用已有的控件寫(xiě)出來(lái)了看起來(lái)也異?;靵y,比如有多層循環(huán)邏輯再加上一些邏輯判斷,場(chǎng)景變量,全局變量來(lái)回變更時(shí),保證metershpere的界面會(huì)讓你看的頭暈。
這時(shí)多數(shù)同學(xué)一定會(huì)選擇自己定義腳本來(lái)解決。
這樣所有復(fù)雜的實(shí)現(xiàn)邏輯都可以在jar包中實(shí)現(xiàn),在beanshell腳本中調(diào)用就顯得非常方便。
1. 生成jar包
IDE 選擇IDEA,網(wǎng)上可以下載到社區(qū)版,對(duì)于我們編jar完全夠用。
新建工程時(shí)建議選擇maven工程,這樣后續(xù)導(dǎo)入依賴(lài)庫(kù)和編包都會(huì)很方便。
在pom.xml中添加項(xiàng)目的三方依賴(lài)庫(kù)
編寫(xiě)完代碼后直接雙擊package即可生成jar包
import java.util.HashMap; import java.util.LinkedHashMap; import java.util.List; public class GenerateSignature { public static String getSignature1(String myJsonString) { LinkedHashMap<String, Object> body = JSON.parseObject(myJsonString, LinkedHashMap.class, Feature.OrderedField); JSONObject myJsonObject = new JSONObject(body); System.out.println(myJsonObject.toString()); String myStr = getSigStr1(body); String signature = MD5Util.getMd5Lower(myStr); return signature+"_"+myTime; } public static String getSignature2(HashMap<String,Object> myHashMap) { int myShutMapTime = 0; int myDelayTime = 0; List<String> myStoreCodes = null; String myStoreCode = null; String mySignatureContent = null; Integer myId = (Integer) myHashMap.get("myId"); String myReason = (String) myHashMap.get("myReason"); int myType = (int) myHashMap.get("myType"); long myTime = (long) myHashMap.get("time"); String signature = MD5Util.getMd5Lower(mySignatureContent); return signature; } }
說(shuō)明:
1. 在工程src/main/java下面如果沒(méi)有定義目錄,在beanshell中直接導(dǎo)入類(lèi)名即可
- import GenerateSignature; 如果有包名目錄,需要帶上包名路徑,如
- import com.test.GenerateSignature
2. GenerateSignature類(lèi)中提供出來(lái)的方法建議都定義成public static 形式,這樣在beanshell腳本中通過(guò)類(lèi)名可以直接調(diào)用 GenerateSignature.getSignature1("myString")
3. 參數(shù)傳入可以以消息體字符串傳入,也可以以Map形式傳入
2. 上傳Jar包
項(xiàng)目設(shè)置==》文件管理==》添加文件 選擇文件上傳
最后點(diǎn)擊查看將添加jar包開(kāi)關(guān)打開(kāi)
3. beanshell腳本調(diào)用代碼
如下:
import java.util.HashMap; import GeneragteSignature; // 參數(shù)為字符串 String myBody = "{\"userName\":\"xxx\",\"orderId\":\"1723333333\"}"; mySig1 = GeneragteSignature.getSignature1(myBody); log.info("mySig1: " + mySig1); //參數(shù)為Map Map map = new HashMap(); map.put("myId", null); map.put("myReason", null); map.put("myType", 1); map.put("time", 0L); mySig2 = GeneragteSignature.getSignature2(map1); log.info("mySig2: " + mySig2);
說(shuō)明:
1. 腳本中演示了兩種參數(shù)方式調(diào)用,一種直接傳消息體字符串,這個(gè)字符串需要經(jīng)過(guò)壓縮轉(zhuǎn)義
大家可以直接到網(wǎng)上查找json字符串壓縮轉(zhuǎn)義網(wǎng)站進(jìn)行處理,如:
2. 如果已Map形式傳入,需要注意map中字段類(lèi)型,比如如果是long行,傳入值需要寫(xiě)成 0L 形式
3. 聲明為Map形式可以直接這樣寫(xiě) Map map = new HashMap(); 不需要帶泛型<>, 如果帶了beanshell可能會(huì)不支持
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
使用java.nio.file?庫(kù)優(yōu)雅的操作文件詳解
這篇文章主要介紹了使用java.nio.file?庫(kù)優(yōu)雅的操作文件詳解,需要的朋友可以參考下2023-05-05SpringBoot整合阿里云OSS對(duì)象存儲(chǔ)服務(wù)的實(shí)現(xiàn)
這篇文章主要介紹了SpringBoot整合阿里云OSS對(duì)象存儲(chǔ)服務(wù)的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-08-08詳解JAVA中的Collection接口和其主要實(shí)現(xiàn)的類(lèi)
這篇文章主要介紹了JAVA中的Collection接口和其主要實(shí)現(xiàn)的類(lèi),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-03-03JAVA連接到SQLserver的步驟方法以及遇到的問(wèn)題
java相對(duì)于其他語(yǔ)言(例如c,c++等)連接數(shù)據(jù)庫(kù)要方便得多,下面這篇文章主要給大家介紹了關(guān)于JAVA連接到SQLserver的步驟方法及遇到的問(wèn)題,文中通過(guò)圖文介紹的非常詳細(xì),需要的朋友可以參考下2022-06-06SpringBoot整合RabbitMQ 手動(dòng)應(yīng)答(簡(jiǎn)單demo)
這篇文章主要介紹了SpringBoot整合RabbitMQ 手動(dòng)應(yīng)答 簡(jiǎn)單demo,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-01-01springboot整合gateway的詳細(xì)過(guò)程
本文介紹了如何配置和使用Spring Cloud Gateway構(gòu)建一個(gè)API網(wǎng)關(guān),通過(guò)實(shí)例代碼介紹了springboot整合gateway的過(guò)程,需要的朋友可以參考下2025-01-01Springboot利用Redis實(shí)現(xiàn)接口冪等性攔截
這篇文章主要為大家介紹了Springboot如何利用Redis實(shí)現(xiàn)接口冪等性攔截。本文將通過(guò)自定義注解+redis+攔截器+MD5?實(shí)現(xiàn),感興趣的可以了解一下2022-06-06java學(xué)習(xí)之理解自動(dòng)拆裝箱特性
這篇文章主要介紹java自動(dòng)拆裝箱特性以及java自動(dòng)拆裝箱的應(yīng)用,有需要的朋友可以借鑒參考下,希望可以有所幫助,祝大家早日升職加薪2021-09-09