Search code examples
classjdbcjmeterbeanshell

Jmeter: BeanshellAssertion Error: Method Not Found In Class


I simply want to read response from jdbc sampler and use it in an http request.

I created a BeanShellAssertion Script under a jdbc request and wrote just the below code, nothing else.

if(vars.getObjects("jdbcresult1").size!=0)
{
   String jdbcresult1=vars.getObjects("jdbcresult1").get(0).get("jdbctrackingnumber1")+"";
   vars.put("trackingnumber1",jdbcresult1);
   log.info("TrackingNumber1 is: "+trackingnumber1);
}

Error:

2020-08-13 23:32:47,030 ERROR o.a.j.u.BeanShellInterpreter: Error invoking bsh method: eval Sourced file: inline evaluation of: ``import java.lang.Object; if(vars.getObjects("jdbcresult1").size!=0) {
String . . . '' : Error in method invocation: Method getObjects( java.lang.String ) not found in class'org.apache.jmeter.threads.JMeterVariables'

2020-08-13 23:32:47,030 WARN o.a.j.a.BeanShellAssertion: Error in BeanShellAssertion

Question1: How do you decide what should you use to write a code to read jdbcresponse value: a. beanshellassertion b. beanshellpostprocessor c. beanshelllistener

Question2: Solution to the original problem, to resolve the error ?


Solution

  • The problem is that:

     vars.getObjects(...) 
    

    does not exist.

    It should be :

     vars.getObject(...)
    

    See:

    Also it’s better to use JSR223 Assertion: