Jmeter - JUnit Sampler

2019-08-10 03:21发布

问题:

I am stuck at this point. I have used JUnit Sampler before successfully many times. But this time I get following error while trying to run simple program.

I have tried different version of jemeter. I copied the selenium server file to jemeter/lib I copied the jar file to lib/junit

I tried their test class and I tried my class

2014/11/05 16:27:23 INFO  - jmeter.protocol.java.sampler.JUnitSampler: Trying to find constructor with one String parameter returned error: test.BeforeAnnotatedTest.<init>(java.lang.String)** 

whole stack trace:

2014/11/05 16:27:23 INFO  - jmeter.engine.StandardJMeterEngine: Running the test! 
2014/11/05 16:27:23 INFO  - jmeter.samplers.SampleEvent: List of sample_variables: [] 
2014/11/05 16:27:23 INFO  - jmeter.gui.util.JMeterMenuBar: setRunning(true,*local*) 
2014/11/05 16:27:23 INFO  - jmeter.engine.StandardJMeterEngine: Starting ThreadGroup: 1 : Thread Group 
2014/11/05 16:27:23 INFO  - jmeter.engine.StandardJMeterEngine: Starting 1 threads for group Thread Group. 
2014/11/05 16:27:23 INFO  - jmeter.engine.StandardJMeterEngine: Thread will stop on error 
2014/11/05 16:27:23 INFO  - jmeter.threads.ThreadGroup: Starting thread group number 1 threads 1 ramp-up 1 perThread 1000.0 delayedStart=false 
2014/11/05 16:27:23 INFO  - jmeter.threads.ThreadGroup: Started thread group number 1 
2014/11/05 16:27:23 INFO  - jmeter.engine.StandardJMeterEngine: All thread groups have been started 
2014/11/05 16:27:23 INFO  - jmeter.threads.JMeterThread: Thread started: Thread Group 1-1 
**2014/11/05 16:27:23 INFO  - jmeter.protocol.java.sampler.JUnitSampler: Trying to find constructor with one String parameter returned error: test.BeforeAnnotatedTest.<init>(java.lang.String)** 
2014/11/05 16:27:23 INFO  - jmeter.threads.JMeterThread: Stop Thread detected by thread: Thread Group 1-1 
2014/11/05 16:27:23 INFO  - jmeter.threads.JMeterThread: Thread finished: Thread Group 1-1 
2014/11/05 16:27:23 INFO  - jmeter.engine.StandardJMeterEngine: Notifying test listeners of end of test 
2014/11/05 16:27:23 INFO  - jmeter.gui.util.JMeterMenuBar: setRunning(false,*local*) 

Here is my class:

package jmeter;

import java.io.File;    
import java.util.Iterator;    
import java.util.Set;    
import java.util.concurrent.TimeUnit;    
import org.apache.log4j.Logger;    
import org.junit.Before;    
import org.junit.BeforeClass;    
import org.junit.Test;    
import org.openqa.selenium.By;    
import org.openqa.selenium.WebDriver;    
import org.openqa.selenium.firefox.FirefoxDriver;

public class ShoppingCartTest {

  public  WebDriver driver=null;

  //Initializes/loads  the driver based on type of browser defined in config file
  @Before
  public void initDriver(){
      driver =new FirefoxDriver();
      driver.manage().timeouts().pageLoadTimeout(120, TimeUnit.SECONDS);
      driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
  }

  @Test
  public void verifyAnItemToWishList() throws InterruptedException{
    driver.get("http://www.google.com")     
    System.out.println("done");

  } 
}   

回答1:

Your code looks good and there are no issues there. Make sure that following conditions are met:

  1. Your class is packaged into .jar file and dropped into /lib/junit folder of your JMeter installation (or alternatively under location specified by user.classpath property)
  2. Looking into your @Before and @Test annotations - you're using JUnit4. In that case you need to tick Search for JUnit4 annotations box in your JUnit Request Sampler as below:

See How to Use JUnit With JMeter guide for comprehensive walkthrough on all aspects of using JUnit in JMeter.

P.S. It may be easier to consider WebDriver Sampler available via JMeter Plugins instead?



回答2:

I had similar issue. It got resolved on Downloading fresh instance of Jmeter, installing Selenium/WebDriver Support plugin and Selenium Server Standalone jar. So this error might be just because of not having required Jar in Jmeter Lib folder.



回答3:

I was facing the same issue, it got resolved with added System.setProperty and i dint add any other constructors (default constructor and any parameter constructor, i had tried with even these 2 constructor even then it was not working, then i added System.setProperty it worked),

For firefox,

    System.setProperty("webdriver.gecko.driver", "D:\\geckodriver.exe");
    WebDriver driver = new FirefoxDriver();

this resolved my issue.



标签: junit jmeter jmx