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

时间:2016-01-13 14:03:43

标签: java calendar jmeter

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

  1. 线程组
    • 缓存管理器
    • Cookie Manager
    • HTTP标头
    • HTTP Manager
    • IF控制器(如果用户可以登录)
    • BeanShell预处理器
  2. 我的代码就像:

    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'文字

    有什么想法吗?提前致谢

1 个答案:

答案 0 :(得分:1)

你的randomTime1没有在任何地方定义,它需要有一些价值。

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

最后,对于性能视角,最好使用__time()__longSum()__Random()函数组合,或者如果您愿意,可以考虑转移到JSR223 PreProcessor and groovy language坚持编写脚本