如何在JMeter中运行groovy/geb测试?

如何在JMeter中运行groovy/geb测试?,groovy,jmeter,phantomjs,spock,geb,Groovy,Jmeter,Phantomjs,Spock,Geb,我如何在JMeter中运行geb测试 我已经编译了一个测试的jar,并在JMeter中创建了一个BSF采样器。我已经为Jmeter安装了groovy插件 我的测试类如下所示: class LoginLogoutTest extends GebSpec { def "Login Logout"() { given: "Go to the Login Page" LoginPage loginPage = to LoginPage when: loginPage

我如何在JMeter中运行geb测试

我已经编译了一个测试的jar,并在JMeter中创建了一个BSF采样器。我已经为Jmeter安装了groovy插件

我的测试类如下所示:

class LoginLogoutTest extends GebSpec {
  def "Login Logout"() {
    given: "Go to the Login Page"
    LoginPage loginPage = to LoginPage

    when:
    loginPage.login("admin", "password")
    then:
    DashboardPage dashboardPage = at DashboardPage

    when:
    dashboardPage.logout()
    then:
    waitFor {at LoginPage}
  }
}
我已经使用Gradle构建了这个测试类所需的所有依赖项的jar

然后在我的JMeterBSF采样器中,我将语言设置为groovy,并编写了以下脚本。正如一些教程所示,我的web-test.jar位于JMeters\lib目录中

import com.geb.tests.LoginLogoutTest;

LoginLogoutTest myTest = new LoginLogoutTest();

myTest."Login Logout"(); //if commented out i get no errors
当我尝试调用
“Login Logout”(
函数时,JMeter抛出以下异常:

WARN  - jmeter.protocol.java.sampler.BSFSampler: BSF error org.apache.bsf.BSFException: exception from Groovy: groovy.lang.MissingFieldException: No such field: $spock_sharedField__browser for class: org.codehaus.groovy.runtime.NullObject
如果我不调用方法,Jmeter不会抛出任何错误,因此我假设我在Jmeter脚本中正确地从jar初始化了类


这样做的原因是,我们可以通过使用PhantomJs运行此测试的多个线程来执行负载测试。

您可以通过JSR223采样器在JMeter中使用Groovy开箱即用:

  • 在JMeter3.0之前,下载Groovy,将embeddeble/Groovy-all.jar复制到JMeter/lib并重新启动JMeter

  • 从JMeter3.0开始,嵌入了Groovy


您可以通过JSR223采样器在JMeter中使用Groovy开箱即用:

  • 在JMeter3.0之前,下载Groovy,将embeddeble/Groovy-all.jar复制到JMeter/lib并重新启动JMeter

  • 从JMeter3.0开始,嵌入了Groovy


我找到了一个斯波克取样器,用于JMeter。我能够运行我的测试。 如果其他人感兴趣,这里有链接。
但是,当运行单线程测试时,为了查看采样器是否工作,chrome浏览器将保持打开状态。不太清楚为什么。当运行多线程时,这将是一个问题,因为会有许多浏览器处于打开状态。目标是使用无头浏览器phantomjs,我也开始使用它。但是,如果我使用headless浏览器运行多个线程,则会留下多个实例,并在windows任务管理进程列表lol中可见。

我能够找到一个适用于JMeter的Spock采样器。我能够运行我的测试。 如果其他人感兴趣,这里有链接。
但是,当运行单线程测试时,为了查看采样器是否工作,chrome浏览器将保持打开状态。不太清楚为什么。当运行多线程时,这将是一个问题,因为会有许多浏览器处于打开状态。目标是使用无头浏览器phantomjs,我也开始使用它。但是,如果我使用headless浏览器运行多个线程,则会留下多个实例,并且在windows任务管理进程列表lol中可见。

因此,不要使用BSF,请尝试使用JSR223。你写的“groovy插件”是什么?我来试一试。插件基本上就是您描述的。只需将所有groovy JAR导入jmeter/lib/ext即可。我认为问题在于我试图将spock测试作为函数调用。也许这是不可能的?JSR223没有运气:(得到相同的异常。让我怀疑我调用了错误的spock测试。我在github上发现了一个spock采样器,它解决了我的问题。所以不要使用BSF,试试JSR223。什么是“groovy插件”你在写什么?我来试一试。插件基本上就是你描述的。只需将所有groovy JAR导入jmeter/lib/ext。我认为问题是我试图将spock测试作为函数调用。也许这不可能?JSR223不可能:(得到相同的异常。使我怀疑我调用了错误的spock测试。我在github上找到了一个spock采样器,解决了我的问题。为什么要从jmeter运行Geb测试?为什么要从jmeter运行Geb测试?