Jmeter - 使用日历非法使用未定义的变量

Jmeter - illegal use of undefined variable using Calendar

我需要在 jmeter 中计算一些日期,所以我在我的测试结构中创建了一个 BeanShell 预处理器:

  1. 线程组
    • 缓存管理器
    • Cookie 管理器
    • HTTP Header
    • HTTP 管理器
    • IF控制器(如果用户可以登录)
    • BeanShell 预处理器

我的代码是这样的:

import java.text.SimpleDateFormat;
import java.util.Calendar;

try {
    Calendar calendar = Calendar.getInstance();
    SimpleDateFormat df= new SimpleDateFormat("yyyy-MM-dd'T'hh:mm:ssX");
    long startTime = calendar.getTimeInMillis();
    long endTime = Long.parseLong(vars.get("dateMiliseconds")); 
    randomStartDate = df.format(startTime + (long)(Math.random()*(endTime-startTime)));
    randomEndDate = randomTime1 + (long)(Math.random()*(endTime - randomTime1)+86400000);
    log.warn("startDate: "+randomStartDate+ " endDate: "+randomEndDate);
    vars.put("RandomStartDate", randomStartDate);
    vars.put("RandomEndDate", randomEndDate); 
} catch (Exception e) {
    log.warn("The error is: "+e);
    throw e;
}

但是当我 运行 测试 Jmeter 错误时说:

ERROR - jmeter.util.BeanShellInterpreter: Error invoking bsh method: eval Sourced file: inline evaluation of: import java.text.SimpleDateFormat; import java.util.Calendar; try{ Calendar ca . . . : illegal use of undefined variable, class, or 'void' literal

WARN - jmeter.modifiers.BeanShellPreProcessor: Problem in BeanShell script org.apache.jorphan.util.JMeterException: Error invoking bsh method: eval Sourced file: inline evaluation of: import java.text.SimpleDateFormat; import java.util.Calendar; try{ Calendar ca . . .: illegal use of undefined variable, class, or 'void' literal

有什么想法吗?提前致谢

您的 randomTime1 未在任何地方定义,它需要有一些值。

此外,最好使用 public final void warn(String message, Throwable throwable) 方法 - 这样您就可以在 jmeter.log 文件中看到完整的堆栈跟踪。

最后,从性能的角度来看,如果您想坚持使用脚本,最好使用 __time(), __longSum() and __Random() functions combination or consider moving to JSR223 PreProcessor and groovy language