我需要用jmeter计算一些日期,所以我在我的测试结构中创建了一个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错误说:
错误 - jmeter.util.BeanShellInterpreter:调用bsh方法时出错:eval源文件:内联评估:
import java.text.SimpleDateFormat; import java.util.Calendar; try{ Calendar ca . . . :
非法使用未定义的变量,类或' void'文字WARN - jmeter.modifiers.BeanShellPreProcessor:BeanShell脚本中的问题org.apache.jorphan.util.JMeterException:调用bsh方法时出错:eval源文件:内联评估:
import java.text.SimpleDateFormat; import java.util.Calendar; try{ Calendar ca . . .
:非法使用未定义的变量,类或' void'文字
有什么想法吗?提前致谢
答案 0 :(得分:1)
你的randomTime1
没有在任何地方定义,它需要有一些价值。
最好使用public final void warn(String message, Throwable throwable)
方法 - 这样您就可以在jmeter.log文件中看到完整的堆栈跟踪。
最后,对于性能视角,最好使用__time(),__longSum()和__Random()函数组合,或者如果您愿意,可以考虑转移到JSR223 PreProcessor and groovy language坚持编写脚本