Jmeter - 使用日历非法使用未定义的变量
Jmeter - illegal use of undefined variable using Calendar
我需要在 jmeter 中计算一些日期,所以我在我的测试结构中创建了一个 BeanShell 预处理器:
- 线程组
- 缓存管理器
- 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
我需要在 jmeter 中计算一些日期,所以我在我的测试结构中创建了一个 BeanShell 预处理器:
- 线程组
- 缓存管理器
- 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' literalWARN - 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