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

时间:2016-04-27 18:45:59

标签: groovy jmeter phantomjs spock geb

我如何在JMeter中运行geb测试?

我编译了一个测试罐,并在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。

然后在我的JMeter BSF采样器中,我将语言设置为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运行此测试的多个线程来执行负载测试。

2 个答案:

答案 0 :(得分:0)

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

  • 在JMeter 3.0之前,下载Groovy,将embeddable / groovy-all.jar复制到jmeter / lib并重启JMeter

  • 从JMeter 3.0开始,嵌入了Groovy

答案 1 :(得分:0)

我找到了适用于JMeter的Spock采样器。我能够运行我的测试。 如果其他人有兴趣,请点击这里链接。 JMeter Spock Sampler 但是,在运行单线程测试时,只是为了看到采样器工作,Chrome浏览器保持打开状态。不太清楚为什么。这在运行多个线程时会出现问题,因为会有许多浏览器保持打开状态。目标是使用无头浏览器phantomjs,我也已经开始工作了。但是,如果我使用无头浏览器运行多个线程,则会在Windows任务管理进程列表中显示多个实例并且可见。