jmeter beanshell Type-d variable declaration:Object constructorエラー

2926 ワード

データベースから値と応答値を比較するには、beanshellを使用します.
import org.json.JSONArray;
import org.json.JSONObject;


res_str = prev.getResponseDataAsString();
JSONObject res_json_obj = new JSONObject(res_str);
JSONArray dbd_json_array = new JSONArray("${dbd}"); //     json
JSONObject dbd_json_obj = new JSONObject();
FailureMessage = "";
Failure = true;

res_json_obj = new JSONObject(res_json_obj.get("data").toString());
if (!res_json_obj.isNull("list")) {
	JSONArray res_json_array = new JSONArray(res_json_obj.get("list").toString());
	log.info("    :" + res_json_array.length());
	log.info("      :" + dbd_json_array.length());

	if (res_json_array.length() == dbd_json_array.length()) {
		for (int i = 0; i < dbd_json_array.length(); i++) {
			Message = "
"+i+" :"; res_json_obj = res_json_array.getJSONObject(i); dbd_json_obj = dbd_json_array.getJSONObject(i); System.out.println(res_json_obj); Iterator keys = dbd_json_obj.keys(); while (keys.hasNext()) { String key = (String) keys.next(); String resvalue=""; String dbdvalue=""; System.out.println("key:" + key); if (key.equals(null) || key.equals("")) { Message += key + " ;"; FailureMessage += Message; Failure = true; log.info(Message); break; } if(res_json_obj.has(key) && dbd_json_obj.has(key)) { resvalue = res_json_obj.getString(key); dbdvalue = dbd_json_obj.getString(key); }else { Message += key + " ;"; FailureMessage += Message; Failure = true; log.info(Message); break; } if (resvalue.equals(dbdvalue)) { Message += key + " ;"; Failure = false; } else { Message += key + " , :" + dbdvalue + ", :"+resvalue; FailureMessage += Message; Failure = true; log.info(Message); break; } log.info("value:" + res_json_obj.get(key)); } } } else { Message += " ;"; Message += " :" + res_json_array + "| :" + dbd_json_array; FailureMessage += Message; Failure = true; log.info("value:" + res_json_obj.get(key)); break; } } else { FailureMessage = " "; log.info(FailureMessage); Failure = true; return; }

このスクリプトには、まず戻り値のオブジェクトを確立する前提があります.jmeterによってデータベースから検証が必要な数値を取得する場合は、javaオブジェクトフィールド名と一致するデータベースクエリ戻り値フィールド名を指定する必要があります.
Typed variable declaration:Object constructorに遭遇
データベース結果の配列は次のとおりです.
dbd=[{cardType=1, cardTypeText=, cardNo=62260906, bankType=1}]
 
cardTypeTextに値がないため,cardTypeTextを付与することで解決できる.
 
同じコードをeclipseで実行しても問題はありませんが、jmeterで問題があり、対空値のデフォルトの処理方法が異なる可能性があります.